Httprunner使用之串联接口

270 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

前一篇文章实现了一个单接口的测试,第二篇我们来实现串接口的测试。首先我们需要搭建一个可测试的系统,可以直接在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