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

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

前言

提取response返回的对象数据,用extract关键字。前面有关于token的取值,通过content.token取值。

本篇详细讲解如何从返回的json数据提取出想要的各种数据

content对象

httprunner里面的content实际上就是request里面的r.content,返回的是一个byte类型。

比如返回的json数据如下

{	"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后面的值"b3f7e8e12d23591ea671374dee818c63b1599d4d"

list类型取值

如果返回的json数据,转化成python里面的list对象,如下结构

[{		"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"	}]

上面这种转化成python里面的list对象,可以用content.int 方法取出对应下标的数据,对应的extract提取方法

  • content.0 取出list里面的第一组数据{"age": 20, "create_time": "2019-09-15", "id": 1, "mail": "283340479@qq.com", "name": "yoyo", "sex": "M"}
  • content.1 取出list里面的第二组数据{"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对应值"yoyo"里面的第三个字符,就可以用content.0.name.2,这种取字符串的一般很少用

实践案例

总的来说,content对象的取值就2种方式:content.keycontent.int,按层级一层的去查找就可以了

这里有个demo案例,使用httpie请求后的响应结果如下

C:\Users\dell>http http://127.0.0.1:8000/api/test/demoHTTP/1.1 200 OKContent-Length: 255Content-Type: application/jsonDate: Sun, 22 Sep 2019 10:11:07 GMTServer: WSGIServer/0.2 CPython/3.6.0X-Frame-Options: SAMEORIGIN{    "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.yml脚本内容

# 上海悠悠,QQ交流群:750815713- config:    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         # 提取mail    validate:        - eq: [status_code, 200]        - eq: [content.msg, success!]        - eq: [$mail, 283340479@qq.com]

运行结果

D:\soft\untitled>hrun test_demo.ymltest_demo case1INFO     GET http://127.0.0.1:8000/api/test/demoINFO     status_code: 200, response_time(ms): 4.99 ms, response_length: 255 bytesINFO     start to extract from response object.INFO     start to validate..----------------------------------------------------------------------Ran 1 test in 0.012sOKINFO     Start to render Html report ...INFO     Generated Html report: D:\soft\untitled\reports\1569147460.html

运行成功!

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

你可能感兴趣的文章
Mysql学习总结(5)——MySql常用函数大全讲解
查看>>
Mysql学习总结(60)——并发量大、数据量大的互联网业务数据库设计规范总结
查看>>
Mysql学习总结(61)——MySQL优化之DBA级优化整理汇总
查看>>
Mysql学习总结(62)——MySQL连接com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link问题
查看>>
Mysql学习总结(63)——Mysql数据库架构方案选择与分析
查看>>
Mysql学习总结(64)——Mysql配置文件my.cnf各项参数解读
查看>>
Mysql学习总结(65)——项目实战中常用SQL实践总结
查看>>
Mysql学习总结(66)——设置MYSQL数据库编码为UTF-8
查看>>
Mysql学习总结(67)——MYSQL慢查询日志
查看>>
Mysql学习总结(68)——MYSQL统计每天、每周、每月、每年数据 SQL 总结
查看>>
Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
查看>>
Mysql学习总结(6)——MySql之ALTER命令用法详细解读
查看>>
Mysql学习总结(70)——MySQL 优化实施方案
查看>>
Mysql学习总结(71)——MySQL 重复记录查询与删除总结
查看>>
Mysql学习总结(71)——数据库介绍(MySQL安装 体系结构、基本管理)再回顾
查看>>
Mysql学习总结(72)——MySQL 开发者开发,设计规范再总结
查看>>
Mysql学习总结(73)——MySQL 查询A表存在B表不存在的数据SQL总结
查看>>
Mysql学习总结(74)——慢SQL!压垮团队的最后一根稻草!
查看>>
Mysql学习总结(75)——并发量大、数据量大的互联网业务数据库设计军规
查看>>
Mysql学习总结(76)——MySQL执行计划(explain)结果含义总结
查看>>