准备包:pytest、yaml、requests库:
本篇简单讲解pytest+yaml完成简单自动化接口测试的参数驱动。该篇主要介绍单接口单变量情况的简单场景,对于复杂场景后续补充
yaml文件各式:
#注意 - 与关键字之间的空格
- 'python'
- 'java'
- 'jmeter'
- '自动化测试'
- '性能测试'
这种yaml文件各式等价于数组:[‘python’,‘java’,‘jmeter’,‘自动化测试’,'性能测试‘
接口测试代码如下:该篇请求接口为‘https://ceshiren.com/search/query’,term为网站的搜索条件,根据yalm文件中的搜索关键字进行搜索,接口请求的status_code作为断言
@pytest.mark.parametrize('param',yaml.load(open('term.yml','r')))
def test_ceshiren(param):
url='https://ceshiren.com/search/query?term'
headers = {
"authority": "ceshiren.com", "x-requested-with": "XMLHttpRequest",
"accept": "application/json, text/javascript, */*; q=0.01", "discourse-present": "true",
"x-csrf-token": "undefined",
"accept-language": "zh-CN,zh;q=0.9",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36",
"sec-fetch-site": "same-origin"}
res=requests.get(url+param,headers)
assert res.status_code==200
'param’作为参数名,将yaml文件中的搜索关键字传递给接口
该用法是基于@pytest.mark.parametrize(‘param’,[]),用文件维护信息更有利于测试用力的维护与更新,多个参数可以写为@pytest.mark.parametrize({‘param1’,[]},{‘param2’,[]})
相应对文件进行调整