httprunner 4.x学习 - 5. validate 断言总结

发布时间 2023-05-05 23:24:45作者: 上海-悠悠

前言

HttpRunner4.x 支持两种(jmespath 和 正则)提取返回结果的方式,并且内置了丰富的校验结果的方式

assert校验方式

validate 可以支持的校验方式

assert 缩写 功能
equal "eq", "equals", "equal" 相等
less_than "lt", "less_than" 小于
less_or_equals "le", "less_or_equals" 小于或等于
greater_than "gt", "greater_than" 大于
greater_or_equals "ge", "greater_or_equals" 大于或等于
not_equal "ne", "not_equal" 不等于
string_equals "str_eq", "string_equals" 转字符串相等
length_equal "len_eq", "length_equal" 长度相等
length_greater_than "len_gt","length_greater_than" 长度大于
length_greater_or_equals "len_ge","length_greater_or_equals" 长度大于或等于
length_less_than "len_lt", "length_less_than" 长度小于
length_less_or_equals ""len_le", "length_less_or_equals" 长度小于或等于
contains check_value 包含 expect_value
contained_by expect_value 包含check_value
type_match type类型匹配
regex_match 正则匹配re.match(expect_value, check_value)
startswith 字符串以xx开头
endswith 字符串以xx结尾

yaml 中可以写2种格式校验

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

  • {"assert_name": [check_value, expect_value]}
  • {"check": check_value, "assert": assert_name, "expect": expect_value, "message": check status code}

第一种校验方式,也就是前面常用到的

  validate:
    - eq: [status_code, 200]
    - eq: [body.url, "http://httpbin.org/post"]
    - eq: [body.origin, "183.193.27.78"]
    - eq: [headers."Content-Type", "application/json"]

第二种校验方式

  validate:
    - check: status_code            # 检查点,支持 jmespath 和正则提取
      assert: eq                    # 断言方式
      expect: 200                   # 期望结果
      message: check status code    # 可选项,当校验失败时的提示语

(备注:第二种校验方式与httprunner3.x版本相比做了一些修改,以前的校验格式是{"check": check_value, "comparator": comparator_name, "expect": expect_value}
现在改成了{"check": check_value, "assert": assert_name, "expect": expect_value, "message": check status code}
总体来说"comparator" 关键字换成了 "assert", "message"关键字无关紧要,没多大作用
)

使用示例

config:
  name: 校验结果

teststeps:
-
  name: post
  variables:
    username: test456
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      username: ${username}
      password: "123456"
  extract:
    url: body.url
    origin: body.origin
    type: headers."Content-Type"
  validate:
    - check: status_code
      assert: eq
      expect: 200
    - check: body.url
      assert: eq
      expect: "http://httpbin.org/postx"
      message: 校验body的url值

contains 校验包含

关于 contains 和 contained_by 函数定义

  • check_value 是需要校验的返回结果
  • expect_value 是期望结果,可以是这几种类型:list, tuple, dict, basestring

使用示例

config:
  name: 校验结果

teststeps:
-
  name: post
  variables:
    username: test456
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      username: ${username}
      password: "123456"
  extract:
    url: body.url
  validate:
    - eq: [status_code, 200]
    - contains: ["${url}", "httpbin.org/post"]