使用pytest+requests进行接口测试实践——测试post请求
还是以Jenkins接口测试为例,Jenkins提供了“禁用”和“启用”job的接口,这个接口的方法是POST方法。我们就以这个接口为例。我们先点击任何一个job,比如“PythonRun”这个job,在打开的页面右下角REST API,在打开的页面中查看提供的接口。我们可以发现这里有个“Disable/Enable a job”的接口:点击“this URL”,可以得到“禁用”和
还是以Jenkins接口测试为例,Jenkins提供了“禁用”和“启用”job的接口,这个接口的方法是POST方法。我们就以这个接口为例。
我们先点击任何一个job,比如“PythonRun”这个job,在打开的页面右下角REST API,在打开的页面中查看提供的接口。我们可以发现这里有个“Disable/Enable a job”的接口:
点击“this URL”,查看接口:
“禁用”:http://localhost:8080/job/PythonRun/disable
“启用”:http://localhost:8080/job/PythonRun/enable
还用到需要查看job状态的接口,点击页面上的:
查看job信息接口:http://localhost:8080/job/PythonRun/api/json
测试思路:
首先调用接口查看job的状态,如果job状态是“启用”,则调用Disable job的接口,之后再查看一次job状态,然后断言该job是“禁用”状态。
如果开始是禁用状态,则调用Enable job的接口,之后再查看一次job状态,然后断言该job是“启用”状态。
测试脚本:
import requests
import pytest
class JK(object):
def __init__(self):
self.disable_url = "http://localhost:8080/job/PythonRun/disable"
self.enable_url = "http://localhost:8080/job/PythonRun/enable"
self.job_url = "http://localhost:8080/job/PythonRun/api/json"
class TestJenkins(object):
"""
Test get a list of jobs from jenkins
"""
@pytest.fixture(scope="module")
def jk(self):
return JK()
def test_disable_job(self, jk):
r = requests.post(jk.enable_url)
assert r.status_code == 200
requests.post(jk.disable_url)
r = requests.get(jk.job_url)
buildable = r.json()['buildable']
assert buildable is False
def test_enable_job(self, jk):
r = requests.post(jk.disable_url)
assert r.status_code == 200
requests.post(jk.enable_url)
r = requests.get(jk.job_url)
buildable = r.json()['buildable']
assert buildable is True
运行测试:
C:\Users\liu.chunming\Desktop>py.test test_report.py --html=.\log.html
查看测试报告:
脚本分析:
1、我们将Jenkins提供的接口放到JK类中集中管理
2、定义一个TestJenkins类用来测试jenkins接口,因为我们用pytest测试框架,所以这个类以test开头;
3、测试类中,利用pytest的fixture机制顶一个jk方法,该方法在该测试模块执行前执行,返回一个JK类的对象
4、测试类中,写了两个测试样例,都是用test开头的,一个是test_disable_job,一个是test_enable_job
5、test_disable_job测试样例中,首先调用enbale job的接口,并且断言接口调用成功,接着调用disable job的接口,然后获取job状态的接口获取buildable字段,如果是false代表,通过disable job接口已经成功将job禁用了。
更多推荐
所有评论(0)