序言
httprunner的使用和其中的一些概念在官方的文档中已经详细说明,写这个学习记录是为了记录下自己的学习历程,能够在今后快速的深入学习和实践。没有提及的部分,请查看官方文档
版本:2.2.5
参考
testcases的编写 ¶
testcase
是包含多个测试步骤的集合。每一个测试步骤是一次请求,各个测试之间可能有相同的请求参数,他们相互关联,又有顺序依赖。
测试用例register.yml
中可以只有一个请求
- test:
name: 开发者注册
request:
method: POST
url: https://api.apiopen.top/developerRegister
data:
name: o_chen
passwd: 123456
email: 2282440078@qq.com
validate:
- eq: [content.code,200]
多个请求之前存在关联关系
测试用例user_register.yml
中多个请求之前存在关联关系
开发者登录,获取apikey
,用户注册是需要传入apikey
- test:
name: 开发者登录
request:
method: POST
url: https://api.apiopen.top/developerLogin
data:
name: o_chen
passwd: 123456
extract:
apikey: content.result.apikey
validate:
- eq: [content.code,200]
- test:
name: 用户注册
request:
method: POST
url: https://api.apiopen.top/registerUser
data:
apikey: $apikey
name: user1
passwd: 123456
nikeName: user1
validate:
- eq: [content.code,200]
公共处理的config
将请求中公有的部分可以独立出来,写入到config
中
- config:
name: 开发者登录后注册
base_url: https://api.apiopen.top
variables:
developer_name: o_chen
passwd: 123456
success_code: 200
- test:
name: 开发者登录
request:
method: POST
url: /developerLogin
data:
name: $developer_name
passwd: $passwd
extract:
apikey: content.result.apikey
validate:
- eq: [content.code,$success_code]
- test:
name: 用户注册
request:
method: POST
url: /registerUser
data:
apikey: $apikey
name: user2
passwd: $passwd
nikeName: user2
validate:
- eq: [content.code,$success_code]
独立的api接口
将请求独立到api中,方便在不同的用例中引用,api编写接口时,动态的参数以变量的形式编写,每个api尽可能的能够单独调用成功。在测试用例中通过关键字api
引用接口的yaml
文件
开发者登录接口
name: 开发者登录
base_url: https://api.apiopen.top
variables:
developer_name: o_chen
passwd: 123456
success_code: 200
request:
method: POST
url: /developerLogin
data:
name: $developer_name
passwd: $passwd
extract:
apikey: content.result.apikey
validate:
- eq: [content.code,$success_code]
用户注册接口
name: 用户注册
base_url: https://api.apiopen.top
variables:
user_name: user0
passwd: 123456
success_code: 200
request:
method: POST
url: /registerUser
data:
apikey: $apikey
name: $user_name
passwd: $passwd
nikeName: $user_name
extract:
apikey: content.result.apikey
validate:
- eq: [content.code,$success_code]
用例中引用接口
- config:
name: 开发者登录后注册
base_url: https://api.apiopen.top
variables:
developer_name: o_chen
passwd: 123456
success_code: 200
- test:
name: 开发者登录
api: api/apiopen/developer_login.yml
- test:
name: 用户注册 user3
api: api/apiopen/register_user.yml
variables:
user_name: user3
- test:
name: 用户注册 user4
api: api/apiopen/register_user.yml
variables:
user_name: user4
- test:
name: 用户注册 user5
api: api/apiopen/register_user.yml
variables:
user_name: user5
用例中引用testcase
teststeps:
-
testcase: testcases/sale/login.yml
output:
- token
-
testcase: testcases/sale/order_list.yml
output:
- orderList
其中,output
输入的是变量名称,将引入的子测试用例中的变量添加到当前的测试用例中。output
关键字也可以写在子测试用例的config
节点中。同时在运行时会把变量打印出来。
testcase中的优先级
base_url
testcase test > testcase config > testsuite test > testsuite config > api
variables
testcase config > testcase test > testcase_def config > testcase_def test > api
verify
testcase teststep (api) > testcase config > testsuite config