httprunner4.x学习6 - 两种方式处理接口关联
前提:
路虽远,我仍在路上就好。
感谢悠悠老师整理的博客园文章和视频, 简单易学。
本来从最新的文章中只是会了第一种方式, 看了代码源码用的是第二种方式,
两种都整理下,也方便整理和理解。
第一种方式:使用export导出变量变成全局变量
当登录用例写完后,后面想继续写其他用例,可以导入前面的login用例,当成下个用例的步骤使用
导入前一个用例之前,需先 export 导出变量,变成全局变量。
登陆用例:
创建文件夹login,在文件夹下分别创建两个文件login.yml 和 useinfo.yml
login.yml用于测试登陆接口, useinfo.yml用于测试获取用户信息
login.yml内容大概如下:
config: name: 测试登录后关联 variables: username: test password: 123456 export: - token teststeps: - name: 登录成功 request: url: http://****:8201/api/v1/login method: POST json: username: ${username} password: ${password} extract: token: body.token validate: - eq: ["status_code", 200] - eq: [body.code, 0]
获取用户信息用例:
其他用例需用到登录的场景,可以使用testcase 关键字导入
config: name: 测试登录后关联 teststeps: - name: 1.登录后-获取token testcase: login/login.yml - name: 2.info request: method: GET headers: Authorization: Token ${token} url: http://****/api/v1/userinfo validate: - eq: [body.code, 0]
使用testcase 导入前面一个用例,导入用例的路径根据项目根目录使用相对路径
使用hrp 命令运行后生成报告
hrp run login/userinfo.yml --gen-html-report
注意点:执行hrp命令的时候,进入的目录一定要是login文件夹的上一级目录,否则无法成功引入login.yml文件种的内容。用例执行结果为0
第二种方式直接写入:把依赖关系写在同一条用例中
获取用户信息用例:
新建用例test_userinfo.yml
config:
name: 用例描述-登录用例
base_url: http://****
variables:
user: test1
psw: "123456"
export:
- token
teststeps:
-
name: step-登录
request:
url: /api/v1/login
method: POST
json:
username: $user
password: $psw
extract:
token: body.token
validate:
- eq: [status_code, 200]
- eq: [body.msg, login success!]
-
name: step-userinfo
request:
url: /api/v1/userinfo
headers:
Authorization: Token $token
method: POST
json:
name: $user
sex: M
age: 20
mail: ******@qq.com
validate:
- eq: [status_code, 200]
- eq: [body.code, 0]
进入testcase目录,执行hrp输出report
hrp run test_userinfo.yml --gen-html-report
简单总结下:
第一种方式当存在大量的接口需要关联前一个接口的情况下,可以做很好的集成。 减少用例写作成本。
第二种方式部分用例需要关联前一个接口,可以在一条用例种写好,保证用例执行就好