httprunner 2.x学习7-参数化(引用外部csv数据)

前言

httprunner 参数化数据源指定支持三种方式:

  • 在 YAML/JSON 中直接指定参数列表:该种方式最为简单易用,适合参数列表比较小的情况

  • 通过内置的 parameterize(可简写为P)函数引用 CSV 文件:该种方式需要准备 CSV 数据文件,适合数据量比较大的情况

  • 调用 debugtalk.py 中自定义的函数生成参数列表:该种方式最为灵活,可通过自定义 Python 函数实现任意场景的数据驱动机制,当需要动态生成参数列表时也需要选择该种方式

环境:httprunner==2.5.7

本篇讲解内置的 parameterize(可简写为P)函数引用 CSV 文件

独立参数

对于已有参数列表,并且数据量比较大的情况,比较适合的方式是将参数列表值存储在 CSV 数据文件中。

对于 CSV 数据文件,需要遵循如下几项约定的规则:

  • CSV 文件中的第一行必须为参数名称,从第二行开始为参数值,每个(组)值占一行;

  • 若同一个 CSV 文件中具有多个参数,则参数名称和数值的间隔符需实用英文逗号;

  • 在 YAML/JSON 文件引用 CSV 文件时,文件路径为基于项目根目录(debugtalk.py 所在路径)的相对路径。

例如,user_id 的参数取值范围为 1001~2000,那么我们就可以创建 user_id.csv,并且在文件中按照如下形式进行描述。

user_id
1001
1002
...
1999
2000

然后在 YAML/JSON 测试用例文件中,就可以通过内置的 parameterize(可简写为 P)函数引用 CSV 文件。

config:
name: "demo"

testcases:
testcase1_name:
testcase: /path/to/testcase1
parameters:
user_id: ${P(data/user_id.csv)}

即 P 函数的参数(CSV 文件路径)是相对于项目根目录的相对路径。
当然,这里也可以使用 CSV 文件在系统中的绝对路径,不过这样的话在项目路径变动时就会出现问题,因此推荐使用相对路径的形式。

csv文件存放user数据

先准备测试数据,准备四组登录用的账号和密码,账号为test1,test2,test3,test4,密码统一设置为123456。

data/user_name.csv文件测试数据

user
test1
test2
test3
test4

testsuites/test_param_csv.yml 文件引用 data/user_name.csv 文件语法${P(user_name.csv)}

# testsuites/test_param_csv.yml
# 上海-悠悠,httprunner QQ交流群:1121184576
config:
name: "test login parameters"

testcases:
login-参数化:
testcase: case/test_login.yml
parameters:
user: ${P(data/user_name.csv)}

csv存放user和psw数据

data/user_password.csv 文件测试数据

user,password
test1,123456
test2,123456
test3,123456
test4,123456

testsuites/test_param_csv.yml文件引用 data/user_password.csv 文件

# testsuites/test_param_csv.yml
# 上海-悠悠,httprunner QQ交流群:1121184576

config:
name: "test login parameters"

testcases:
login-参数化:
testcase: case/test_login.yml
parameters:
user-password: ${P(data/user_password.csv)}

运行结果

cmd执行hrun testsuites/test_param_csv.yml

(venv_hrun) D:\soft\venu_hrun>hrun testsuites/test_param_csv.yml
INFO HttpRunner version: 2.5.7
INFO Start to run testcase: login-参参数数化化
login-setup
INFO POST http://127.0.0.1:8000/api/v1/login/
INFO status_code: 200, response_time(ms): 338.0 ms, response_length: 110 bytes

.

----------------------------------------------------------------------
Ran 1 test in 0.354s

OK
INFO Start to run testcase: login-参参数数化化
login-setup
INFO POST http://127.0.0.1:8000/api/v1/login/
INFO status_code: 200, response_time(ms): 331.52 ms, response_length: 110 bytes

.

----------------------------------------------------------------------
Ran 1 test in 0.332s

OK
INFO Start to run testcase: login-参参数数化化
login-setup
INFO POST http://127.0.0.1:8000/api/v1/login/
INFO status_code: 200, response_time(ms): 316.43 ms, response_length: 110 bytes

.

----------------------------------------------------------------------
Ran 1 test in 0.316s

OK
INFO Start to run testcase: login-参参数数化化
login-setup
INFO POST http://127.0.0.1:8000/api/v1/login/
INFO status_code: 200, response_time(ms): 300.28 ms, response_length: 110 bytes

.

----------------------------------------------------------------------
Ran 1 test in 0.300s

OK
INFO Start to render Html report ...
INFO Generated Html report: D:\soft\venu_hrun\reports\20200613T022146.605872.html

V1.x版本测试数据csv文件只能与测试用例文件放在同一目录,V2.x版本支持写对路径,以文件路径为基于项目根目录(debugtalk.py 所在路径)的相对路径。如:data/user_id.csv

(0)

相关推荐