testsuite
测试用例集(testsuite)是测试用例(testcase)的无序集合,集合中的测试用例应该都是相互独立,不存在先后依赖关系的,如果确实存在先后依赖 关系,那就需要在测试用例中完成依赖的处理(上一篇中已经讲过)。
参数化数据驱动
场景: 要对登录流程进行测试,需要分别验证用户名和密码的长度、格式、是否正确等。就需要传入多组数据
背景: HttpRunner2.0 不支持在testcase文件中进行参数化配置;参数化的功能需要在 testsuite 中实现。目的是
让测试用例(testcase)的概念更纯粹(测试用例是单个功能的实现和定义)
解决: 在 testsuite 中引用testcase,使用 parameters 关键字,定义参数名称并指定数据源取值方式。
参考文章https://cn.httprunner.org/prepare/parameters/
testcase中的登录用例:
testcases/login.yml
config:
name: login
variables:
password: ${ENV(PASSWORD)} # testsuite中使用csv进行参数驱动时,会覆盖env中的赋值
phone: ${ENV(USERNAME)}
verify: false
base_url: ${get_base_url()}
teststeps:
- name: /login
......
测试用例集(testsuite):
testsuites/login_with_parameters.yml
config:
name: login with different accounts
testcases:
login:
testcase: testcases/login.yml
paramters: # 定义参数来源及取值方式
#user_agent: ["iOS/10.1", "iOS/10.2", "iOS/10.3"] # 方式一:直接指定参数列表
#user_id: ${get_account(10)} # 方式二:使用debugtalk.py中定义的函数生成
#引用csv时,testsuite中的参数、testcase中的参数和csv中的变量名需一致
phone-password: ${P(accounts.csv)} # 方式三:使用P函数引用CSV 文件,
accounts.csv
phone,password
18691123412,wd414
18691123412,zou4
说明:
数据源指定支持三种方式:
- 在 YAML/JSON 中直接指定参数列表:该种方式最为简单易用,适合参数列表比较小的情况
- 通过内置的 parameterize(可简写为P)函数引用 CSV 文件:该种方式需要准备 CSV 数据文件,适合数据量比较大的情况
- 调用 debugtalk.py 中自定义的函数生成参数列表:当需要动态生成参数列表时选择该种方式