测试用例格式
HttpRunner
的测试用例支持两种文件格式:YAML
和 JSON
。
JSON
和 YAML
格式的测试用例完全等价,包含的信息内容也完全相同。
对于选择哪种格式取决于您的心情。
测试用例结构
网络异常,图片无法展示
|
在 HttpRunner
中,测试用例组织主要基于三个概念:
- 测试套(
testsuite
):对应一个文件夹,包含一个或者多个测试用例文件(YAML/JSON
) - 测试用例(
testcase
):对应一个YAML/JSON
文件,包含单个或多个测试步骤 - 测试步骤(
teststep
):对应YAML/JSON
文件中的一个test
,描述单次接口测试的、接口请求、解析响应结果、校验结果等
对于单个 YAML/JSON
文件来说,数据存储结构为 list of dict
的形式,其中可能包含一个全局配置项(config
)和若干个测试步骤(test
)。
config
:作为整个测试用例的全局配置项test
:对应单个测试步骤(teststep
),测试用例存在顺序关系,运行时将从前往后依次运行各个测试步骤
对应的yaml
格式如下:
config: name: "demo testcase" ... teststeps: - name: demo step 1 ... - name: demo step 2 ... 复制代码
变量上下文
在测试用例内部,HttpRunner
划分了两种变量上下文类型(context
)。
config
:作为整个测试用例的全局配置项,作用域为整个测试用例; test
:作用于测试步骤、会继承或覆盖 config
中定义的内容; 即:test
中的定义的变量比config
中定义的变量优先级高。
各个测试步骤(test
)的变量空间相互独立,互不影响; 如需在多个测试步骤(test
)中传递参数值,则需要使用 extract
关键字,并且只能从前往后传递。
config
样例:
config: name: "demo testcase" variables: device_sn: "ABC" username: ${ENV(USERNAME)} password: ${ENV(PASSWORD)} base_url: "https://getman.cn/mock" setup_hooks: - ${hook_print(setup)} teardown_hooks: - ${hook_print(teardown)} 复制代码
test
样例:
- name: demo step 1 api: api/demo_api.yml variables: user_agent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36' device_sn: $device_sn extract: - token: content.name validate: - eq: ["status_code", 200] setup_hooks: - ${hook_print(setup)} teardown_hooks: - ${hook_print(teardown)} 复制代码
常用字段说明
extract
用于数据提取和传递。
支持多种提取方式:
响应结果为 JSON
结构,可采用.运算符的方式,例如headers.Content-Type
、content.success
; 响应结果为 text/html
结构,可采用正则表达式的方式,例如blog-motto\">(.*)
。
validate
用于断言。
支持两种格式:
validate: - eq: ["status_code", 200] 复制代码
validate: - check: status_code comparator: eq expect: 200 复制代码
hooks
钩子函数,在特定的地方进行特定的调用。
常用的断言
"eq", "equals", "==", "is" 意为: "实际结果"和"期望结果"相等 "lt", "less_than" 意为: "实际结果"小于"期望结果" "le", "less_than_or_equals" 意为: "实际结果"小于等于"期望结果" "gt", "greater_than" 意为:"实际结果"大于"期望结果" "ge", "greater_than_or_equals" 意为: "实际结果"大于等于"期望结果" "ne", "not_equals" 意为: "实际结果"和"期望结果"不相等 "str_eq", "string_equals" 意为: 转义字符串后对比,"实际结果"和"期望结果"相等 "len_eq", "length_equals", "count_eq" 意为: 字符串或list长度,"实际结果"和"期望结果"相等 "len_gt", "count_gt", "length_greater_than", "count_greater_than" 意为: "实际结果的长度"大于"期望结果" "len_ge", "count_ge", "length_greater_than_or_equals","count_greater_than_or_equals" 意为: "实际结果的长度"大于等于"期望结果" "len_lt", "count_lt", "length_less_than", "count_less_than" 意为: "实际结果的长度"小于"期望结果" "len_le", "count_le", "length_less_than_or_equals","count_less_than_or_equals"意为: "实际结果的长度"小于等于"期望结果"