博客
关于我
httprunner学习7-extract提取content返回对象
阅读量:471 次
发布时间:2019-03-06

本文共 2625 字,大约阅读时间需要 8 分钟。

如何从HTTPRunner响应中提取数据

在使用HTTPRunner工具时,提取响应数据是非常重要的一步操作。以下将详细介绍如何从返回的JSON数据中提取所需的各种数据。

1. 理解content对象

在HTTPRunner中,content对象实际上是请求返回的响应内容。在Python中,这个对象通常会返回原始的字节类型(byte)。为了方便提取数据,我们可以将其转换为字典类型。以下是一个示例响应:

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

将其转换为Python字典后,可以通过以下方式提取数据:

  • content.code 提取 code 对应的值 0
  • content.msg 提取 msg 对应的值 "login success!"
  • content.username 提取 username 对应的值 "test"
  • content.token 提取 token 对应的值 "b3f7e8e12d23591ea671374dee818c63b1599d4d"

2. 列表类型的数据提取

如果返回的数据是列表类型,例如以下结构:

[    {        "age": 20,        "create_time": "2019-09-15",        "id": 1,        "mail": "283340479@qq.com",        "name": "yoyo",        "sex": "M"    },    {        "age": 21,        "create_time": "2019-09-16",        "id": 2,        "mail": "123445@qq.com",        "name": "yoyo111",        "sex": "M"    }]

可以通过以下方式提取数据:

  • content.0 提取列表中的第一组数据:{"age": 20, "create_time": "2019-09-15", "id": 1, "mail": "283340479@qq.com", "name": "yoyo", "sex": "M"}
  • content.1 提取列表中的第二组数据:{"age": 21, "create_time": "2019-09-16", "id": 2, "mail": "123445@qq.com", "name": "yoyo111", "sex": "M"}
  • content.0.name 提取第一组数据的 name 对应值 "yoyo"
  • content.1.name 提取第二组数据的 name 对应值 "yoyo111"
  • content.0.mail 提取第一组数据的 mail 对应值 "283340479@qq.com"

通过 content.int 方法还可以提取字符串中的特定字符,例如提取第一组数据的 name 对应值的第三个字符 "y",可以使用 content.0.name[2]

3. 实践案例

以下是一个实际案例,展示如何从响应数据中提取所需数据。假设通过HTTPRunner发起一个GET请求,返回的响应内容如下:

{    "code": 0,    "datas": [        {            "age": 20,            "create_time": "2019-09-15",            "id": 1,            "mail": "283340479@qq.com",            "name": "yoyo",            "sex": "M"        },        {            "age": 21,            "create_time": "2019-09-16",            "id": 2,            "mail": "123445@qq.com",            "name": "yoyo111",            "sex": "M"        }    ],    "msg": "success!"}

目标是从 datas 数组中提取 mail 对应的值 "283340479@qq.com"。可以通过以下方式实现:

# test_demo.ymlconfig:    name: test_demo    variables: {}- test:    name: test_demo case1    request:        url: http://127.0.0.1:8000/api/test/demo        method: GET        headers:            Content-Type: application/json            User-Agent: python-requests/2.18.4        json:            username: test            password: 123456    extract:        - mail: content.datas.0.mail    validate:        - eq: [status_code, 200]        - eq: [content.msg, success!]        - eq: [$mail, 283340479@qq.com]

运行上述脚本后,会从响应中提取 mail 对应的值 "283340479@qq.com",并验证响应状态码、消息内容以及提取结果。

4. 提取方法总结

总结来说,content 对象的提取方法有两种:

  • content.key:直接通过键名访问对应值。
  • content.int:用于访问列表中的具体项。
  • 通过层级一层一层地查找,可以轻松提取所需的数据。

    转载地址:http://sxlbz.baihongyu.com/

    你可能感兴趣的文章
    svn访问报错500
    查看>>
    sum(a.YYSR) over (partition by a.hy_dm) 不需要像group by那样需要分组函数。方便。
    查看>>
    ORCHARD 是什么?
    查看>>
    Struts2中使用Session的两种方法
    查看>>
    order by rand()
    查看>>
    Orderer节点启动报错解决方案:Not bootstrapping because of 3 existing channels
    查看>>
    org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement profile
    查看>>
    org.apache.commons.beanutils.BasicDynaBean cannot be cast to ...
    查看>>
    org.apache.dubbo.common.serialize.SerializationException: com.alibaba.fastjson2.JSONException: not s
    查看>>
    sqlserver学习笔记(三)—— 为数据库添加新的用户
    查看>>
    org.apache.ibatis.exceptions.PersistenceException:
    查看>>
    org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned
    查看>>
    org.apache.ibatis.type.TypeException: Could not resolve type alias 'xxxx'异常
    查看>>
    org.apache.poi.hssf.util.Region
    查看>>
    org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
    查看>>
    org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /
    查看>>
    org.hibernate.HibernateException: Unable to get the default Bean Validation factory
    查看>>
    org.hibernate.ObjectNotFoundException: No row with the given identifier exists:
    查看>>
    org.springframework.boot:spring boot maven plugin丢失---SpringCloud Alibaba_若依微服务框架改造_--工作笔记012
    查看>>
    SQL-CLR 类型映射 (LINQ to SQL)
    查看>>