httprunner4.x学习6 - 两种方式处理接口关联

前提:

路虽远,我仍在路上就好。

感谢悠悠老师整理的博客园文章和视频, 简单易学。

本来从最新的文章中只是会了第一种方式, 看了代码源码用的是第二种方式,

两种都整理下,也方便整理和理解。

第一种方式:使用export导出变量变成全局变量

当登录用例写完后,后面想继续写其他用例,可以导入前面的login用例,当成下个用例的步骤使用
导入前一个用例之前,需先 export 导出变量,变成全局变量。

登陆用例:

创建文件夹login,在文件夹下分别创建两个文件login.yml 和 useinfo.yml

login.yml用于测试登陆接口, useinfo.yml用于测试获取用户信息

login.yml内容大概如下:

config:
  name: 测试登录后关联
  variables:
    username: test
    password: 123456
  export:
    - token

teststeps:
-
  name: 登录成功
  request:
      url: http://****:8201/api/v1/login
      method: POST
      json:
        username: ${username}
        password: ${password}
  extract:
      token: body.token
  validate:
      - eq: ["status_code", 200]
      - eq: [body.code, 0]

获取用户信息用例:

其他用例需用到登录的场景,可以使用testcase 关键字导入

config:
  name: 测试登录后关联

teststeps:
-
  name: 1.登录后-获取token
  testcase: login/login.yml

- name: 2.info
  request:
    method: GET
    headers:
      Authorization: Token ${token}
    url: http://****/api/v1/userinfo
  validate:
    - eq: [body.code, 0]

  使用testcase 导入前面一个用例,导入用例的路径根据项目根目录使用相对路径
使用hrp 命令运行后生成报告

hrp run login/userinfo.yml --gen-html-report

  注意点:执行hrp命令的时候,进入的目录一定要是login文件夹的上一级目录,否则无法成功引入login.yml文件种的内容。用例执行结果为0

 

 

第二种方式直接写入:把依赖关系写在同一条用例中

获取用户信息用例:

新建用例test_userinfo.yml

config:
name: 用例描述-登录用例
base_url: http://****
variables:
user: test1
psw: "123456"
export:
- token

teststeps:
-
name: step-登录
request:
url: /api/v1/login
method: POST
json:
username: $user
password: $psw
extract:
token: body.token
validate:
- eq: [status_code, 200]
- eq: [body.msg, login success!]

-
name: step-userinfo
request:
url: /api/v1/userinfo
headers:
Authorization: Token $token
method: POST
json:
name: $user
sex: M
age: 20
mail: ******@qq.com
validate:
- eq: [status_code, 200]
- eq: [body.code, 0]

  进入testcase目录,执行hrp输出report

hrp run test_userinfo.yml --gen-html-report

 

简单总结下:

第一种方式当存在大量的接口需要关联前一个接口的情况下,可以做很好的集成。 减少用例写作成本。

第二种方式部分用例需要关联前一个接口,可以在一条用例种写好,保证用例执行就好

posted @ 2023-05-28 14:38  Jenny测试开发  阅读(143)  评论(0编辑  收藏  举报