例如我们存在一个这样的接口,返回内容是 json格式
这种键值对存在的格式就很简单,直接取值就可
多层取值也是json取值格式,list取值就是下表:content.0
字典就是key:content.keyname
但注意一点是,如果返回的是unicode编码,断言时直接写中文即可
上面我们说的是取值,以下要说变量
在httprunner上,我们要声明变量,关键字是variabls
name: 测试登录
variables: #注意这里
username: 11
password: 111!
request:
data:
deviceId: '111'
grant_type: password_code
password: $password #注意这里即可
username: $username
validCode: '11'
headers:
Authorization: Basic d2ViQXBwOnNodWhhaUAxMjM=
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36
method: POST
url: http://192.168.xxxx.xxx:9900/api-xx/xxx/token
validate:
- eq:
- status_code
- 200
- eq:
- headers.Content-Type
- application/json
- eq:
- content.code
- 0
- len_eq:
- content.0.access_token
- 36
运行即可看到调用的是定义的变量
而我们测试中,通常会有多个环境,此时需要配置不痛的环境
name: 测试登录
base_url: http://192.1xx.xx.xxx:9900
variables:
username: xx
password: xxx!
request:
data:
deviceId: 'xx'
grant_type: password_code
password: $password
username: $username
validCode: '11'
headers:
Authorization: Basic d2ViQXBwOnNodWhhaUAxMjM=
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36
method: POST
url: /api-uaa/oauth/token
validate:
- eq: [status_code,200]
- eq: [headers.Content-Type,application/json]
- eq: [content.code,0]
- len_eq: [content.data.access_token,36]
调用执行即可
一个总结:
参数 如果是json 则用json +键值对
参数 如果是data 则用data+键值对
如果是get请求,参数形式为params+键值对
request:
data:
password: $password
username: $username
request:
json:
password: $password
username: $username
request:
params:
password: $password
username: $username