httprunner接口间参数依赖处理方式——extract+content.参数名

场景一:一些接口请求需要身份认证成功之后才能获取到数据

场景二:依赖上游接口的返回参作为下一个接口参数

示例接口:

getSchoolList----获取用户的所有学校列表

postman:直接调用getSchoolList接口,接口响应:没有token

在请求头里将登录成功返回的token放在cookie里,再次请求,身份鉴权成功,接口返回数据

ps:本次实践还是遵循api-testcase-testsuite分层,进行脚本编写

1、创建一个.env文件(引入概念:.env文件为全局默认配置文件

先配置一下参数

# 域名地址 
BASE_URL = http://xxx.xxx.com 
# 登录账号+密码 
MOBILE = 1782683xxxx
PASSWORD = 69f600a1be1d7aa6318ea5b274c09ae6

2、在api文件下,完善login_test.yml脚本,引用.env文件里的配置变量:${ENV(变量名)}

name: login_api
base_url: ${ENV(BASE_URL)}
# 公共变量
variables:
        account: ${ENV(MOBILE)}
        password: ${ENV(PASSWORD)}
        status: 200
request:
    headers:
        Content-Type: "application/json;charset=UTF-8"
        User-Agent:
          "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30
          (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1 Edg/92.0.4515.159"
    json:
        account: $account
        password: $password
    method: POST
    url: /nbugs-auth-center-test/xyhauth/checkPwd
validate:
-   eq:
    - status_code
    - 200
-   eq:
    - body.code
    - 200

3、在api文件下,新增getSchoolList.yml脚本,引用.env文件里的配置变量:${ENV(变量名)}

Cookie: nbugs=$token

name: getSchoolList
base_url: ${ENV(BASE_URL)}

request:
  headers:
    Content-Type: application/json;charset=UTF-8
    Cookie: nbugs=$token
# get请求,用params接收参数
  params:
    moblie = ${ENV(MOBILE)}
  method: GET
  url: /nbugs-auth-center-test/xyhauth/getSchoolList

validate:
-   eq:
    - status_code
    - 200
-   eq:
    - body.code
    - 200

4、在testcases文件下,新增test_case_getschoollist.yml脚本

引入关键字概念:extract

登录后提取响应结果里的token,用关键字extract,然后通过content.参数名

以下响应结果为登录成功返回的,要提取data里面的值,用content.data

{
   "code": 200,
   "msg": "success",
   "data": "5149750101f314083aeecbd27b7cfa277",
   "success": true,
   "requestId": "286b30a0-4379-11ec-883d-6f05a975e30c"
}

脚本内容:

config:
  name: getshcoollist

teststeps:
-
  name: 正常登录
  api: "test_httprunner/api/login_test.yml"
  extract:
    token: content.data
-
  name: 获取学校列表
  api: "test_httprunner/api/getSchoolList.yml"
  validate:
    - eq:
        - status_code
        - 200
    - eq:
        - body.code
        - 200

5、在testsuites文件下,新增test_suite_getschoollist.yml脚本

config:
  name: 获取学校列表

testcases:
-
   name: 获取学校列表
   testcase: testcasestest_case_getschoollist.yml

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>