httprunner测试框架4--extract提取返回对象

提取返回对象

提取response返回的对象数据,用extract关键字,通过content.key和content.int提取。httprunner里面的content实际上就是request里面的r.content,返回的是一个byte类型。
如果返回的json数据类型,用content.key取出对应的values:

{
"code":0,
"msg": "login success!",
"username": "test",
"token": "b3f7e8e12d23591ea671374dee818c63b1599d4d"
}

上面的json数据,可以转成python里面对应的dict类型,extract提取方法:

  • content.code 取出code后面对应的值 0
  • content.msg 取出msg后面的对应值“login success!”
  • content.username 取出username后面的值"test"
  • content.token 取出token值
    如果返回的是list数据类型,用content.int方式取出对应下标的数据
[{
"age":18,
"name":"zhangsan"
},
{
"age":20,
"name":"lisi"
}]

对应的extract提取方法:

content.0 取出第一组数据{"age":18, "name":"zhangsan"}
content.0.name 取出第一组数据name的对应值 "zhangsan"

content对象的取值方式就2种:content.key和content.int

extract提取token参数并关联

前言
如何将上个接口的返回token,传给下个接口当做请求参数?这是工作中经常遇到的问题。
要解决这个问题很简单,我们只需要提取出token值,设置为一个中间变量a,下个接口传这个变量a就可以了。
场景案例
我现在有一个登录接口A,登录成功后返回token,接口B查询用户信息,需要A接口返回的token才能访问。
A登录接口文档基本信息:

  • 访问地址:http://127.0.0.1:9000/api/v1/login/
  • 请求类型:POST
  • 请求头部:application/json
  • 请求参数:{“username”:“test”, “password”:“123456”}
    B获取用户信息接口文档基本信息:
  • 访问地址:http://127.0.0.1:9000/api/v1/userinfo
  • 请求类型:GET
  • 请求头部:Content-Type: application/json
  • 请求头部的token参数:Authorization: Token xxxxx
    extract提取token
# yaml文件
extract:
    - token: content.token

下个接口的用例引用token参数使用$token,用例参考如下:

# 登录的yaml文件
- config:
    name: test API
    request:
      base_url: http://127.0.0.1:9000
- test:
    name: 用户名密码正确登录成功
    request:
      url: /api/v1/login/
      method: POST
      headers:
        Content-Type: application/json
      json:
        username: test
        password: '123456'
    extract:
      - token: content.token
    validate:
      - eq: [status_code, 200]
      - eq: [content.msg, 'login success!']
- test:
    name: 查询用户信息
    request:
      url: /api/v1/userinfo
      method: GET
      headers:
        Content-Type: application/json
        Authorization: Token $token
    validate:
      - eq: [status_code, 200]
      - eq: [content.msg, sucess!]
      - eq: [content.data.0.mail, [email protected]]
      - eq: [content.data.0.name, test]

查看report报告

在这里插入图片描述
token引用成功
在这里插入图片描述

发布了28 篇原创文章 · 获赞 0 · 访问量 379

猜你喜欢

转载自blog.csdn.net/qq_42098424/article/details/105089477