第一篇实现了一个单接口的测试,第二篇我们来实现串接口的测试。首先我们需要搭建一个可测试的系统,可以直接在github上找一个商城系统,或者直接在公司系统测试环境进行测试。
为什么需要串接口?
我们知道“单接口”的测试非常好完成,可以通过各种接口请求工具比如postman,python request包等去发起post,get请求。但是单接口无法验证我们的业务逻辑,只能验证这个单接口是否能够请求,试想一下,万一开发那天觉得自己以前写的代码不够美观,然后改动了一下,没有通知你,但是一上线就发现业务逻辑跑不通了,造成了很严重的影响,后果可想而知…
如何用httprunner实现串接口
1、概念基本解释:
相较与教程(一)中的目录,我添加了order项目,在order中新增了api、testcases、testsuites以及debugtalk.py(在上一篇文章中有说明)
文件夹说明:
api:用来存放单接口相关信息
testcases:引用api中定义的接口,组成测试用例
testsuites:测试用例集的集合
字段说明:
variables:用来定义变量,必须在api中定义相关变量,在testcases中引用变量时,必须先在api中引用
validate:断言,用来比较定义预期结果
extract:接口返回的数据
(如图中取出token数据,json.data.token )
2、定义单接口
api 中定义单接口的各项参数,
请求url ,请求方式,请求参数等
login.yml
name: 用户登陆
base_url: http://192.168.0.120:8080
variables:
status: 0
username: admin1
password: admin1
request:
url: /auth
method: POST
params:
userName: $username
password: $password
validate:
- eq: [json.status,$status]
3、定义测试用例
config中定义的是全局变量
test中引入api中定义的相关参数
extract将上一个接口的返回值,放入到下一个接口的请求参数中
${authorization()} 调用在debugtalk中定义的函数,封装了token格式
- config:
name: 查询订单
base_url: http://192.168.0.120:8080
variables:
status: 0
username: admin1
password: admin1
- test:
name: 用户登陆
api: project/order/api/login.yml
variables:
userName: $username
password: $password
extract:
data_token: json.data.token
validate:
- eq: [json.status,$status]
- test:
name: 获取订单信息
api: project/order/api/order_info.yml
variables:
token: ${authorization($data_token)}
validate:
- eq: [json.status,$status]
4、测试用例集合
将已经封装好的测试用例,添加到testcases中
config:
name: 订单相关测试用例合集
testcases:
-
name: 查询订单
testcase: testcases/order_cases.yml
5、执行用例
hrun project/order/testsuites/order_suites.yml