E01_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 源码文件及分析如下图所示:
HttpRunner 断言支持两种格式:
- {"comparator_name": [check_item, expect_value]}
- {"check": check_item, "comparator": comparator_name, "expect": expect_value}
以访问百度首页为例,对返回的响应状态码进行断言
- config:
name: TestCase
- test:
name: TestStep -1
request:
url: https://www.baidu.com/
method: GET
headers:
User-Agent: 'ozilla/5.0 (Windows NT 6.1; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0'
validate:
# 断言写法一, 判断返回的响应状态码是否为200
- eq: [status_code, 200]
# 断言等价写法二
-
check: status_code
comparator: eq
expect: 200
用例执行后查看测试报告,两个验证完全相同。