HttpRunner-02-用例组织_测试用例


测试用例格式

​HttpRunner​​​ 的测试用例支持两种文件格式:​​YAML​​​ 和 ​​JSON​​。

​JSON​​​ 和 ​​YAML​​ 格式的测试用例完全等价,包含的信息内容也完全相同。

对于选择哪种格式取决于您的心情。

测试用例结构

HttpRunner-02-用例组织_json_02在 ​​​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:
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\">(.*)</h2>​​。

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"意为: "实际结果的长度"小于等于"期望结果"