testsuite

测试用例集(testsuite)是测试用例(testcase)的无序集合,集合中的测试用例应该都是相互独立,不存在先后依赖关系的,如果确实存在先后依赖 关系,那就需要在测试用例中完成依赖的处理(上一篇中已经讲过)。

参数化数据驱动

场景: 要对登录流程进行测试,需要分别验证用户名和密码的长度、格式、是否正确等。就需要传入多组数据
背景: HttpRunner2.0 不支持在testcase文件中进行参数化配置;参数化的功能需要在 testsuite 中实现。目的是
让测试用例(testcase)的概念更纯粹(测试用例是单个功能的实现和定义)
解决: 在 testsuite 中引用testcase,使用 parameters 关键字,定义参数名称并指定数据源取值方式。
参考文章https://cn.httprunner.org/prepare/parameters/

testcase中的登录用例:

testcases/login.yml

  1. config:
  2. name: login
  3. variables:
  4. password: ${ENV(PASSWORD)} # testsuite中使用csv进行参数驱动时,会覆盖env中的赋值
  5. phone: ${ENV(USERNAME)}
  6. verify: false
  7. base_url: ${get_base_url()}
  8. teststeps:
  9. - name: /login
  10. ......

测试用例集(testsuite):
testsuites/login_with_parameters.yml

  1. config:
  2. name: login with different accounts
  3. testcases:
  4. login:
  5. testcase: testcases/login.yml
  6. paramters: # 定义参数来源及取值方式
  7. #user_agent: ["iOS/10.1", "iOS/10.2", "iOS/10.3"] # 方式一:直接指定参数列表
  8. #user_id: ${get_account(10)} # 方式二:使用debugtalk.py中定义的函数生成
  9. #引用csv时,testsuite中的参数、testcase中的参数和csv中的变量名需一致
  10. phone-password: ${P(accounts.csv)} # 方式三:使用P函数引用CSV 文件,

accounts.csv

  1. phone,password
  2. 18691123412,wd414
  3. 18691123412,zou4

说明
数据源指定支持三种方式:

  • 在 YAML/JSON 中直接指定参数列表:该种方式最为简单易用,适合参数列表比较小的情况
  • 通过内置的 parameterize(可简写为P)函数引用 CSV 文件:该种方式需要准备 CSV 数据文件,适合数据量比较大的情况
  • 调用 debugtalk.py 中自定义的函数生成参数列表:当需要动态生成参数列表时选择该种方式