您的位置:首页 > 产品设计 > UI/UE

使用pytest+requests进行接口测试实践——测试get请求

2015-09-01 15:38 711 查看
Jinkens是一个非常流行的持续集成工具,它提供了好多API以便对其进行二次开发。由于其提供了API接口,我们可以将其作为我们的测试对象,来学习如何使用requests进行接口测试。

首先要安装好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?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: