前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >httprunner 2.x学习13-自定义校验器(comparator)

httprunner 2.x学习13-自定义校验器(comparator)

作者头像
上海-悠悠
发布2021-04-26 09:58:46
6610
发布2021-04-26 09:58:46
举报
文章被收录于专栏:从零开始学自动化测试

前言

当我们需要对返回的结果做较复杂的校验时候,httprunner自带的校验方法无法满足我们的需求,可以自己写校验方法。

validator 校验器

httprunner 校验返回结果有2种格式

  • {“comparator_name”: [check_item, expect_value]}
  • {“check”: check_item, “comparator”: comparator_name, “expect”: expect_value}

我们平常用的比较多是是上面这种,直接拿到返回结果,校验与期望结果是否一致

代码语言:javascript
复制
validate:
- eq: [status_code, 200]
- less_than: [status_code, 400]
- equals: [content.code, 0]
- equals: [content.msg, success!]
- length_equals: [content.datas, 2]
- greater_than_or_equals: [content.datas.0.age, 18]

如果我们需要更复杂一点的校验,上面的就不能满足需求了,比如我要判断返回的结果,所有的年龄都是大于等于18的,但是返回的数据是不固定的,可以是2个也可以是3个

代码语言:javascript
复制
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/{
"code": 0,
"data": [
{
"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!"
}

自定义校验器(comparator)

当自带的断言方法无法满足需求的时候,可以自己在 debugtalk.py 写函数,自定义校验方法

代码语言:javascript
复制
# debugtalk.py
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/# 获取data数据,断言每个数据的age字段大于等于expect_age
def all_age_great(data, expect_age):
""" all age great then expect_age
"""
for info in data:
assert info.get('age') >= expect_age

于是 yaml 用例可以这样写

代码语言:javascript
复制
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/config:
name: test_demo
base_url: http://127.0.0.1:8000
variables: {}teststeps:
-
name: test_demo case1
request:
url: /api/test/demo
method: GET
headers:
Content-Type: application/json
User-Agent: python-requests/2.18.4
json:
username: test
password: 123456
validate:
-    check: content.data
comparator: all_age_great
expect: 18
-    all_age_great: [content.data, 18]

以上2种方式都是支持的。以上解决方法来源于源作者https://zhuanlan.zhihu.com/p/31994479

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • validator 校验器
  • 自定义校验器(comparator)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档