在使用HttpRunner测试过程当中,咱们可能会遇到这种场景:php
帐号登陆功能,须要输入用户名和密码,设计测试用例后有 N 种组合状况api
若是测试组合比较少,好比只有2个,那咱们直接在YAML脚本中写2个 test 就好了,但若是测试组合有10个,或者上百个,咱们总不可能写10个,甚至100个 test 吧?app
所以,在这里咱们就须要用到参数化。在HttpRunner中,经过关键字 parameters 来实现参数化数据驱动机制,无论有多少测试组合,咱们只需写1个 test 就好了。学习
本人环境:HttpRunner V1.5.8测试
登陆接口文档说明:http://doc.nnzhp.cn/index.php?s=/6&page_id=12url
咱们继续以以前的登陆接口来学习,若是不使用 parameters 来进行参数化,那么咱们的用例可能就是这样的:spa
- config: name: login test request: base_url: http://api.nnzhp.cn - test: name: login case 1 request: url: /api/user/login method: POST headers: Content-Type: application/x-www-form-urlencoded User-Agent: Fiddler data: username: test1010 passwd: aA123456 validate: - eq: [status_code, 200] - eq: [content.error_code, 0] 省略不少个 test - test: name: login case N request: url: /api/user/login method: POST headers: Content-Type: application/x-www-form-urlencoded User-Agent: Fiddler data: username: test101012 passwd: aA123456 validate: - eq: [status_code, 200] - eq: [content.error_code, 0]
在上面的用例中,咱们可能要写不少的 test ,在这些 test 中,除了 request-data 中 username 和 passwd 的值不同,其余内容都彻底同样。设计
当咱们使用 parameters 来实现参数化后,咱们只要写 1个test 就好了,避免了重复的脚本代码,同时脚本内容也变得更加简洁。code
我目前的 HttpRunner 版本是 1.5.8 ,关键字 parameters 能够在 config 或 test 中使用,咱们只以在 config 中使用 parameters 来进行说明。orm
**注意:**在 HttpRunner 1.5.11 以后的版本中,再也不支持在 test 中使用 parameters 。
咱们准备 3 组登陆用的数据,其中,第1组和第3组是能正常登陆的用户名和密码,第2组是错误的用户名和密码。使用 parameters 以下:
parameters: - username-passwd: - ["niuhanyang", "aA123456"] # 正确的用户名密码 - ["test10101", "fasdfasfa"] # 错误的用户名密码 - ["test1010", "aA123456"] # 正确的用户名密码
而后,只保留一个 test 便可,并在 request-data 中引入参数,以下:
data: username: $username passwd: $passwd
完整的YAML用例:
- config: name: parameters test request: base_url: http://api.nnzhp.cn parameters: - username-passwd: - ["niuhanyang", "aA123456"] # 正确的用户名密码 - ["test10101", "fasdfasfa"] # 错误的用户名密码 - ["test1010", "aA123456"] # 正确的用户名密码 - test: name: login case request: url: /api/user/login method: POST headers: Content-Type: application/x-www-form-urlencoded User-Agent: Fiddler data: username: $username passwd: $passwd validate: - eq: [status_code, 200] - eq: [content.error_code, 0]
运行用例,而后便可获得测试报告,以下:
上面介绍的是用户名和密码一对一的状况,若是是 多对一 或 一对多 关系,好比 3 组登陆用的数据中,用户名不同,但密码都是相同的,这个时候,若是用上面的写法,就不太方便了。
对于这种状况,咱们能够这样写:
parameters: - username: ["niuhanyang", "test10101", "test1010"] - passwd: ["aA123456"]
只需改动 config 中的 parameters ,其余内容都不须要修改。运行用例后的报告以下:
有时候,咱们可能存在多对多的测试场景,即笛卡尔积的组合状况。若是有 3 个不一样的用户名,2 个不一样的密码,对于这种状况,使用笛卡尔积组合,就应该存在 2 * 3 = 6 种测试组合。
对于这种状况,咱们能够这样写:
parameters: - username: ["niuhanyang", "test10101", "test1010"] - passwd: ["aA123456", "fasdfasfa"]
只需改动 config 中的 parameters ,其余内容都不须要修改。运行用例后的报告以下: