J07_优化一下测试用例集合
前面我们完成了“定义接口文件 - 编写测试用例 - 定义测试集 - 执行测试”一个完整的测试过程,但是有些地方明显味道不好。例如每个接口定义文件中都用到了一些相同的参数,我们是否可以只定义一次呢?
HttpRunner 提供了灵活的变量传递处理机制:
- 在测试集合里定义变量
- 接口/用例中的变量直接取测试集合里面变量的值
修改思路如下:
- 去掉接口文件中“variable”部分的所有变量定义
- 测试用例的内容保持不变
- 在测试集文件中,增加“variable”部分的所有变量定义
1. 修改后的接口文件(去除变量定义):gitee_api_get_branch.yml
name: 获取仓库单个分支接口
base_url: https://gitee.com/api/v5/repos
request:
url: /$owner/$repo/branches/$branch
method: GET
params:
access_token: $token
extract:
- author: content.commit.commit.author.name
validate:
- eq: [status_code, 200]
- eq: [$author, 悠灵]
2. 修改后的接口文件(去除变量定义):gitee_api_get_commits.yml
name: 获取某个分支的所以提交信息
base_url: https://gitee.com/api/v5
request:
url: /repos/$owner/$repo/commits
method: GET
params:
access_token: $token
sha: $branch
extract:
- message: content.0.commit.author.name
validate:
- eq: [status_code, 200]
- eq: [$message, 悠灵]
3. 未改变的用例文件:gitee_test01_get_master.yml
- config:
name: 测试获取“仓库某个分支”接口
- test:
name: 获取 master 分支
api: gitee_api_get_branch.yml
4. 未改变的用例文件:gitee_test02_get_commits.yml
- config:
name: 测试获取“仓库某个分支所有提交”接口
- test:
name: 测试获取 master 分支所有提交
api: gitee_api_get_commits.yml
5. 修改后的测试集文件(增加变量定义):gitee_suite.yml
config:
name: 测试获取“某个分支”和“某个分支所有提交”接口
variables:
token: d66685d1474c67f8ef2860c34561e1f5
owner: youling_zhulongcao
repo: Test
branch: master
testcases:
testcase 1:
name: 获取“某个分支”
testcase: gitee_test01_get_master.yml
testcase 2:
name: 获取“某个分支所有提交”
testcase: gitee_test02_get_commits.yml
这样看起来是否清爽很多呢? 接口/用例文件中只涉及变量的使用,而变量的定义和赋值放到测试集合文件中,一次定义多处使用。
当然这里也涉及作用域的问题,如果测试集合和测试用例中定义了相同的变量会怎样呢?测试集合中的变量会覆盖测试用例中的同名变量。