httprunner 4.x学习 -9.parameters 参数化
前言
httprunner 4.x 实现参数化使用parameters 关键字,数据源有三种方式
- 1.在yaml 文件中直接写测试数据源
- 2.测试数据源写到csv文件
- 3.自定义函数,函数返回列表形式数据
参数配置
参数名称的定义分为两种情况:
- 独立参数单独进行定义;
- 多个参数具有关联性的参数需要将其定义在一起,采用短横线(-)进行连接。
数据源指定支持三种方式:
- 在 YAML/JSON 中直接指定参数列表:该种方式最为简单易用,适合参数列表比较小的情况
- 通过内置的 parameterize(可简写为P)函数引用 CSV 文件:该种方式需要准备 CSV 数据文件,适合数据量比较大的情况
- 调用 debugtalk.py 中自定义的函数生成参数列表:该种方式最为灵活,可通过自定义 Python 函数实现任意场景的数据驱动机制,当需要动态生成参数列表时也需要选择该种方式
三种方式可根据实际项目需求进行灵活选择,同时支持多种方式的组合使用。
假如测试用例中定义了多个参数,那么测试用例在运行时会对参数进行笛卡尔积组合,覆盖所有参数组合情况。
单个参数时参数化
先准备测试数据,准备四组登录用的账号和密码,账号为test1,test2,test3,test4,密码统一设置为123456。
参数user账号数据,设置对应的值 ["test1", "test2", "test3", "test4"],定义单个参数用variables,定义参数化用parameters
# 作者-上海悠悠 wx:283340479
# blog地址 https://www.cnblogs.com/yoyoketang/
config:
name: login case
parameters:
user: [test1, test2, test3, test4]
teststeps:
-
name: post
request:
method: POST
url: http://httpbin.org/post
json:
username: ${user}
password: "123456"
validate:
- eq: [status_code, 200]
如果参数化里面的数据只有一个,比如psw对应的值只有一个,parameters 也可以设置 password的值
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
config:
name: login case
parameters:
user: [test1, test2, test3, test4]
password: 123456
variables 和 parameters 设置相同名称变量时,parameters 优先级大于variables
完整的 login_params.yml 脚本如下
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
config:
name: login case
variables:
user: test
password: 123456
parameters:
user: [test1, test2, test3, test4]
teststeps:
-
name: post
request:
method: POST
url: http://httpbin.org/post
json:
username: ${user}
password: ${password}
validate:
- eq: [status_code, 200]
运行用例,会自动生成四个测试用例
hrp run test_p2.yml --gen-html-report
关联性的参数化
上面的案例多个账号,密码都是一样的,如果密码不一样呢?上面的就行不通了,所以针对于一个账号对应一个密码,这种一一对应的关系,可以用关联性的参数化
# 作者-上海悠悠 wx:283340479
# blog地址 https://www.cnblogs.com/yoyoketang/
config:
name: login case
parameters:
user-password:
- [test1, "123456"]
- [test2, "123456"]
- [test3, "123456"]
- [test4, "123456"]
teststeps:
-
name: post
request:
method: POST
url: http://httpbin.org/post
json:
username: ${user}
password: ${password}
validate:
- eq: [status_code, 200]
笛卡尔积组合
比如测试账号有四种["test1", "test2", "test3", "test4"],密码也有四种 ["123456", "123456", "123456", "123456"]
用笛卡尔积组合的话,就是4*4=16种组合
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
config:
name: login case
parameters:
user: [test1, test2, test3, test4]
password: ["123456", "123456", "123456", "123456"]
teststeps:
-
name: post
request:
method: POST
url: http://www.example.com/
params:
username: ${user}
password: ${password}
validate:
- eq: [status_code, 200]
这样运行会生成16组用例