后续接口使用fixture的数据,是实际场景中一大应用,起到了类似前置程序一样的作用。
1、确定传参的参数。以测试手机号归属地的request请求为例,接口需要传的参数为shouji,appkey。
2、conftest中定义fixture方法返回shouji、appkey
@pytest.fixture(scope='function')
def get_params():
params = {
"shouji": "13456755448",
"appkey": "f59e0831625536e7"
}
return params
3、调用2中定义好的get_params方法。此处有两种调用参数形式。
1)传参中直接用get_params的返回值。
def test_mobile_get(get_params):
print("测试手机号归属地get请求")
r = requests.get('https://api.binstd.com/shouji/query', params=get_params)
assert r.status_code == 200
result = r.json()
assert result['status'] == 0
assert result['msg'] == 'ok'
assert result['result']['shouji'] == '13456755448'
assert result['result']['province'] == '浙江'
assert result['result']['company'] == '中国移动'
assert result['result']['cardtype'] is None
assert result['result']['areacode'] == '0571'
2)另外定义两个变量接收get_params的值,以这两个变量作为传参去请求。
def test_mobile_post(get_params):
shouji = get_params["shouji"]
appkey = get_params["appkey"]
print("测试手机号归属地get请求")
r = requests.post(url='https://api.binstd.com/shouji/query', params={
"shouji": shouji,
"appkey": appkey
})
# print(r.json())
# print(r.status_code)
assert r.status_code == 200
result = r.json()
assert result['status'] == 0
assert result['msg'] == 'ok'
assert result['result']['shouji'] == '13456755448'
assert result['result']['province'] == '浙江'
assert result['result']['company'] == '中国移动'
assert result['result']['cardtype'] is None
assert result['result']['areacode'] == '0571'