httprunner2.x--HttpRunner断言:validate 总述

一个完整的测试用例中应该包括“预期结果”和“实际结果”字段,而二者内容是否一致,是判断测试用例是否执行通过的标准。在自动化测试中,这个判断过程是由“断言(Assert)”来实现的。HttpRunner 框架中提供了多种类型的断言以供使用。

在 HttpRuner 框架源码中主要有三个文件涉及断言相关内容:

httprunner-2.5.5\httprunner\validator.py
httprunner-2.5.5\httprunner\parser.py
httprunner-2.5.5\httprunner\builtin\comparators.py

首先阅读 validator.py 文件,一共有 5 种格式可以用于断言处理:

对变量内容进行断言
对引用的函数进行断言
对字典(dict)或列表(list)进行断言,而且可能包含了变量和函数
对由分隔符连接的字符串进行断言
对正则表达式进行断言
 

其中,如果被断言的对象如果是 dict 或者 list,则按 1-3 项方式处理,否则按 4、5 项方式处理。

 

validator.py 源码文件及分析如下图所示:

    def __eval_validator_check(self, check_item):
        """ evaluate check item in validator.

        Args:
            check_item: check_item should only be the following 5 formats:
                1, variable reference, e.g. $token #变量
                2, function reference, e.g. ${is_status_code_200($status_code)} #函数
                3, dict or list, maybe containing variable/function reference, e.g. {"var": "$abc"} #字典或列表中可能包含的函数
                4, string joined by delimiter. e.g. "status_code", "headers.content-type"#字符串和带分隔符的字符串
                5, regex string, e.g. "LB[\d]*(.*)RB[\d]*"#正则表达式

        """
        if isinstance(check_item, (dict, list)) \
                or isinstance(check_item, parser.LazyString):
            # format 1/2/3 #针对字典和列表
            check_value = self.session_context.eval_content(check_item)
        else:
            # format 4/5 #针对其他类型
            check_value = self.resp_obj.extract_field(check_item)

        return check_value

HttpRunner 断言支持两种格式:

{"comparator_name": [check_item, expect_value]}
{"check": check_item, "comparator": comparator_name, "expect": expect_value}

 

如:

name: 断言的2种写法


request:
    url: https://www.baidu.com/
    method: GET
    headers:
      User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36


validate:
    # 断言一
    - eq: [status_code, 200]
    # 断言二
    - check: status_code
      comparator: eq
      expect: 200

  

执行后查看报告,两个验证完全相同。

 

 

  

  

 

posted @ 2021-06-04 10:23  莫使娇躯空对月  阅读(280)  评论(0编辑  收藏  举报