使用pytest+requests进行接口测试实践——测试get请求
2015-09-01 15:38
711 查看
Jinkens是一个非常流行的持续集成工具,它提供了好多API以便对其进行二次开发。由于其提供了API接口,我们可以将其作为我们的测试对象,来学习如何使用requests进行接口测试。
首先要安装好jenkins,非常简单。看这里:如何安装Jenkins
在Jenkins中创建三个job,为我们的测试做个准备。打开Jenkins我们将看到这样的页面,点击右下角的REST API可以查看当前页面上,Jenkins提供了那些API可用:
接着第一个测试类,在测试类里面定义一个测试方法,每一个测试方法就相当于一个测试样例。根据pytest单元测试框架的规范,测试类和测试方法都是以test开头。
在测试方法中,通过request发出get请求,将请求的响应对象赋值给r对象。通过响应对象r的json()方法对相应结果进行反序列化,也就是将json字符串格式的响应结果转换成python字典格式。
接着断言返回的三个job名称。
最后的if语句来执行该测试,在命令行中执行:
其实,import pytest和if语句块可以不用写,在执行测试的时候按照py.test方式执行即可:
首先要安装好jenkins,非常简单。看这里:如何安装Jenkins
在Jenkins中创建三个job,为我们的测试做个准备。打开Jenkins我们将看到这样的页面,点击右下角的REST API可以查看当前页面上,Jenkins提供了那些API可用:
测试对象:
获取该页面上的所有job名称。如何知道获得job名称的接口呢?点击上图右下角的REST API。在弹出的页面上找到“Controlling the amount of data you fetch”这一小节。点击上面的“ ]json?tree=jobs[name]”,就可以在浏览器地址栏上得到接口地址:http://localhost:8080/api/json?tree=jobs[name],同时也得到调用该接口的输出信息。{"jobs":[{"name":"dd"},{"name":"PythonRun"},{"name":"TestWork"}]}
测试思路:
首先调用接口获得所有job的名称,然后按顺序断言每个job的名称。测试脚本:
import requests import pytest class TestJenkins(object): """ Test get a list of jobs from jenkins """ def test_get_all_job_names(self): url = "http://localhost:8080/api/json?tree=jobs[name]" r = requests.get(url) jobs = r.json() assert jobs['jobs'][0]['name'] == 'dd' assert jobs['jobs'][1]['name'] == 'PythonRun' assert jobs['jobs'][-1]['name'] == 'TestWork' if __name__=="__main__": pytest.main()
脚本分析:
首先导入requests库用来发送http请求,还要导入pytest这个python的单元测试框架用来组织、运行和管理我们的测试。接着第一个测试类,在测试类里面定义一个测试方法,每一个测试方法就相当于一个测试样例。根据pytest单元测试框架的规范,测试类和测试方法都是以test开头。
在测试方法中,通过request发出get请求,将请求的响应对象赋值给r对象。通过响应对象r的json()方法对相应结果进行反序列化,也就是将json字符串格式的响应结果转换成python字典格式。
接着断言返回的三个job名称。
最后的if语句来执行该测试,在命令行中执行:
C:\Users\liu.chunming\Desktop>python test_report.py --html=.\log.html将会生成一个html格式的测试报告log.html
其实,import pytest和if语句块可以不用写,在执行测试的时候按照py.test方式执行即可:
C:\Users\liu.chunming\Desktop>py.test test_report.py --html=.\log.html要输出html格式的报告,要事先安装pytest-html这个pytest的插件才行。如何安装pytest-html?
相关文章推荐
- #inception# Follow Your Heart and Persue Your Dream
- uva live 5031 Graph and Queries(Treap x 并查集)
- Myslq 启动报错The server quit without updating PID file
- 【iOS知识学习】_iPhone学习多个UITextField 键盘弹起
- [Bluetooth API]使用Irprops库搜索蓝牙设备
- iOS开发 UIScrollView自带的缩放功能(简单的例子)
- div设置contentEditable="true"作为文本编辑器,定位光标解决办法
- UITouch
- Git+gerrit user guide
- [Bluetooth(SDK)]使用WinSock搜索蓝牙设备
- 【LeetCode】225. Implement Stack using Queues
- UIImageView响应点击事件
- 1099. Build A Binary Search Tree (30)
- Warning: The Copy Bundle Resources build phase contains this target's Info.plist file 'Info
- 【LeetCode】232. Implement Queue using Stacks
- phalcon query 如何找bug
- UIView的基本使用
- 跟随鼠标NGUI
- 十六进制的颜色值转成RGB UIColor
- 使用UIView的animation