httprunner是基于requests的,所以处理思路与python中处理一样
目录
1、变量
2、httprunner参数关联
3、httprunner参数化
1、变量
比如说有一种场景,接口a需要传一个参数m值才能返回接口,接口b需要传参数m的值以及a的返回值才能获取结果,这时候可以把参数的值作为一个全局变量,然后传值
这里用到关键字variables
- config: name: my_test base_url: http://localhost:8090 variables: m: test - test: name: a request: url: /a method: post headers: Content-Type: application/json json: m: $m extract: - q: content.q validate: - eq: [status_code, 200] - test: name : b request : url : /b method : POST headers: Content-Type: application/json token: $token json: m: $m q: $q validate : - eq : [status_code,200]- config: name: my_test base_url: http://localhost:8090 variables: m: test - test: name: a request: url: /a method: post headers: Content-Type: application/json json: m: $m extract: - q: content.q validate: - eq: [status_code, 200] - test: name : b request : url : /b method : POST headers: Content-Type: application/json token: $token json: m: $m q: $q validate : - eq : [status_code,200]
2、httprunner参数关联
2个接口直接有关联,比如新增的接口需要登录信息才能请求成功,这时候就需要把登录信息传给登录接口,可以是cookies或者token
这里用到关键字extract关键字完成提取,这里以某平台的登录token关联为例:
mytest.yaml
- config: name: my_test base_url: http://localhost:8090 - test: name: test_demo case1 request: url: /admin/login method: post headers: Content-Type: application/json json: username: admin password: 123456 extract: - token: content.token # 提取token validate: - eq: [status_code, 200] - test: name : add request : url : /admin/add method : POST headers: Content-Type: application/json
token: $token
json: m: $m
validate : - eq : [status_code,200]
3、httprunner参数化
在case中需要添加多种场景的参数取值组合,来检验case,以某平台登录为例子,以下记录以csv来传参,用到关键字parameters,传csv 使用parameterize(可简写为P)
myuser.csv
username,password name1,123456 name2,1234567
mytest.yaml
- config: name: my_test base_url: http://localhost:8090 parameters: - username-passwd:${P(myuser.csv)} #1、参数名称与文件第一行成对应关系 2、从第2行开始取值 - test: name: test_demo case1 request: url: /admin/login method: post headers: Content-Type: application/json json: username: $user password: $password validate: - eq: [status_code, 200]