接口自动化测试是现代Web开发中不可避免的环节之一。其中,pytest和yaml是比较常用的工具,用于协助进行自动化测试;同时,请求和关联封装是测试中常见的技巧之一,可以使测试用例编写更加简洁高效。本文将深入介绍pytest+yaml的使用以及请求和关联封装技巧,并通过Python代码进行演示。
一、pytest+yaml的使用
pytest是一种基于Python的测试框架,用于编写和运行各种类型的测试,包括单元测试和功能测试等。而yaml(Yet Another Markup Language)则是一种轻量级的数据序列化格式,可以用于存储测试用例数据。
我们可以将测试用例数据存放在yaml文件中,pytest可以直接读取yaml文件中的数据进行测试。如下述代码:
import pytest
import requests
import yaml
def test_login():
with open('test_data.yaml', 'r', encoding='utf-8') as f:
test_data = yaml.load(f, Loader=yaml.FullLoader)
for data in test_data:
resp = requests.post(data['url'], data['data'])
assert resp.status_code == data['status_code']
其中,test_data.yaml文件内容如下:
- url: "http://example.com/login"
data:
username: "admin"
password: "123456"
status_code: 200
- url: "http://example.com/login"
data:
username: "admin"
password: "123"
status_code: 401
以上代码中,我们使用pytest框架读取yaml文件中的数据进行测试,可以大大简化测试用例编写的工作量。
二、请求和关联封装
在实际测试中,我们经常遇到一个接口返回需要作为下一个请求的参数使用。这时,我们可以使用请求和关联封装技巧,将之前的请求返回结果保存下来,然后在下一个请求中使用。
下面是一个简单的登录操作流程,其中第一个请求返回了token值,需要在下一个请求中作为参数使用:
import requests
def test_login():
# 登录
resp1 = requests.post('http://example.com/login', json={
'username': 'test',
'password': 'test'
})
token = resp1.json()['token']
# 获取用户信息
resp2 = requests.get('http://example.com/user', headers={
'Authorization': 'Bearer {}'.format(token)
})
assert resp2.status_code == 200
以上代码中,我们使用Requests库发送登录请求并获取返回的token;然后,在下一个请求中将token作为Authorization请求头附加到请求中。通过这种方式,我们可以方便地完成关联封装。
对于多次请求需要关联的情况,我们可以将其封装成一个函数,在函数中保存返回值,在后续的请求中直接调用即可。如下所示:
import requests
def login():
resp = requests.post('http://example.com/login', json={
'username': 'test',
'password': 'test'
})
return resp.json()['token']
def get_user_info(token):
resp = requests.get('http://example.com/user', headers={
'Authorization': 'Bearer {}'.format(token)
})
return resp.json()
def test_login():
# 登录
token = login()
# 获取用户信息
user_info = get_user_info(token)
assert user_info['username'] == 'test'
通过封装login和get_user_info函数,我们可以方便地关联请求结果,使测试用例更加清晰和简洁。
总结:
本文介绍了pytest+yaml的使用以及请求和关联封装技巧,通过Python代码进行演示。应用这些技巧可以提高测试用例的编写效率,帮助测试人员更好地完成测试工作,保障Web应用的质量和安全。
【软件测试到测试开发全测试生涯学习路线】:【以下路线图太详细了只能展开部分,具体的可以在文章末尾扫描小卡片备注000领取哦】
1:自动化测试进阶系列:
2:全栈性能测试,监控以及调优
3:全栈测试开发平台实战
4:全栈安全测试渗透测试
5:devops持续集成部署
6:全栈接口测试工具进阶
7:跨平台自动化测试工具
8:大厂简历,真题,录音
9:全栈系列课企业项目实战
学完这整套教程,拿下大厂30k到50k不是问题