前言
- HttpRunner v3.x 支持3种用例格式:pytest、YAML和JSON;pytest、YAML和JSON格式的测试用例完全等价,可使用Yaml和Json用例生成pytest用例。
基础概念
- 测试用例集(testsuite): 是测试用例的无序集合,集合中的测试用例应该都是相互独立,不存在先后依赖关系的。如果确实存在先后依赖关系怎么办,例如登录功能和下单功能。正确的做法应该是,在下单测试用例的前置步骤中执行登录操作。对应一个YAML/JSON/Python文件,包含单个或多个测试用例文件。
- 测试用例(testcase): 测试用例是测试步骤的有序集合;应该是为了测试某个特定的功能逻辑而精心设计的,并且至少包含如下几点:
- 明确的测试目的(achieve a particular software testing objective)
- 明确的输入(inputs)
- 明确的运行环境(execution conditions)
- 明确的测试步骤描述(testing procedure)
- 明确的预期结果(expected results)
- 测试步骤(teststep): 测试用例是测试步骤的有序集合,而对于接口测试来说,每一个测试步骤应该就对应一个 API 的请求描述。对应YAML/JSON/Python中 teststeps下的一个节点,描述单次接口测试的全部内容,包括发起接口请求、解析响应结果、检验结果等。
config
- 每个测试用例都必须有config部分,可以配置用例。
属性名称 | 是否必填 | 作用 |
---|
name | 必填 | 指定测试用例名称。这将显示在执行日志和测试报告中。 | base_url | 可选 | 如果base_url指定,则 teststep 中的 url 可以设置相对路径部分 | verify | 可选 | https请求时,是否校验证书,默认True,忽略证书校验可以设置为False | variables | 可选 | 定义的全局变量,作用域为整个用例。每个测试步骤都可以引用config variables。也就是说,step variables 优先级高于 config variables. | parameters | 可选 | 全局参数,用于实现数据化驱动,作用域为整个用例。 | export | 可选 | 指定输出的测试用例变量。将每个测试用例看作一个黑盒,config variables是输入变量,config export是输出变量。当一个测试用例在另一个测试用例的步骤中被引用时,config export将被提取并在随后的测试步骤中使用。 |
config:
name: login
variables:
varA: "configA"
varB: "configB"
varC: "configC"
parameters:
varA: ["paramA1"]
varB: ["paramB1"]
base_url: "https://postman-echo.com"
verify: False
export: ["foo3"]
teststeps:
-
name: step 1
...
-
name: step 2
...
teststeps
- 每个测试用例都有1个或多个测试步骤(List[step]),每个测试步骤对应一个API请求或其他用例的引用
属性名称 | 是否必填 | 作用 |
---|
name | 必填 | 指定测试步骤名称 | request | 必填 | 指定测试步骤变量,参数引用变量"$变量名" | variables | 可选 | 指定测试步骤变量,参数引用变量"$变量名" | extract | 可选 | 提取返回结果 | export | 可选 | 导出的测试用例会话变量,设为全局变量 | validate | 可选 | 校验返回结果 | hooks | 可选 | 请求钩子 | testcase | 可选 | 指定引用的测试用例 |
teststeps:
-
name: get with params
variables:
foo1: bar11
foo2: bar21
sum_v: "${sum_two(1, 2)}"
request:
method: GET
url: /get
params:
foo1: $foo1
foo2: $foo2
sum_v: $sum_v
headers:
User-Agent: HttpRunner/${get_httprunner_version()}
extract:
foo3: "body.args.foo2"
validate:
- eq: ["status_code", 200]
- eq: ["body.args.foo1", "bar11"]
- eq: ["body.args.sum_v", "3"]
- eq: ["body.args.foo2", "bar21"]
export:
- foo3
testcase: testcases/demo_testcase_request.yml
|