HttpRunner接口关联与常用断言
接口关联
日常工作中,我们在请求很多接口的时候需要先登录获取cookie或者token,作为后续请求其他接口的凭证,这需要我们将接口关联起来。
以企业微信为例,我们调用服务端API时,需要先提供access_token。
第一个test接口获取token,并提取出存储到变量中,在第二个test接口中直接调用该变量,如下:
# 接口关联
- config:
name: 微信接口
base_url: https://api.weixin.qq.com
- test:
name: 获取token
request:
url: /cgi-bin/token
method: GET
params:
grant_type: client_credential
appid: wxf14419077f707856
secret: 92a113bd4b5ffdc72144740dc7123c99
extract:
- token: content.access_token
- time: content.expires_in
validate:
- eq: [$time,7200]
- test:
name: 获取用户所有标签
request:
url: /cgi-bin/tags/get
method: GET
params:
access_token: $token # 引用上面的token实现关联
extract:
- id: content.tags.0.id
- name: content.tags.0.name
validate:
- eq: [$id,2]
- eq: [$name,"星标组"]
这样我们就实现了接口的关联。
常用断言
validate: 断言设置 可以对响应数据做多个断言验证
注:断言操作一般都用在testcases用例层做业务断言,api层只是做简单的断言
格式为:
validate:
- eq: [status_code,200]
相关常用断言
- eq、equals、==、is,判断实际结果和期望结果是否相等
- lt、less_than,判断实际结果小于期望结果
- le、less_than_or_equals,判断实际结果小于等于期望结果
- gt、greater_than,判断实际结果大于期望结果
- ge、greater_than_or_equals,判断实际结果大于等于期望结果
- ne、not_equals, 判断实际结果和期望结果不相等
- str_eq、string_equals 判断转字符串后对比实际结果和期望结果是否相等
- len_eq、length_equals、count_eq 判断字符串或list长度
- len_gt、length_greater_than、count_gt、count_greater_than 判断实际结果的长度大于和期望结果
- len_ge、length_greater_than_or_equals、count_ge、count_greater_than_or_equals实际结果的长度大于等于期望结果
- len_lt、length_less_than、count_lt、count_less_than实际结果的长度小于期望结果
- len_le、length_less_than_or_equals、count_le count_less_than_or_equals实际结果的长度小于等于期望结果
注: 断言一般用在测试步骤层里面,如下
# 断言
- config:
name: 测试百度网站
base_url: https://www.baidu.com
- test:
name: 接口名称 百度接口
request:
url: /
method: GET
validate:
- eq: [status_code,200] # 判断相等的4种写法 [实际结果,预期结果]
- is: [status_code,200]
- ==: [status_code,200]
- equals: [status_code,200]
注:在yaml文件中,断言引用函数需要加引号 " ",如下图