在以前的文章中,咱们已经学习了 parameters 参数化,是在测试脚本中直接指定参数列表。这种方法简单易用,但若是咱们的参数列表数据比较多,这种方法可能就不太适合了。php
当数据量比较大的时候,咱们但愿能够把测试数据写到 CSV 文件中,而后直接引用 CSV 文件数据。api
本人环境:HttpRunner V1.5.8app
##测试场景函数
咱们继续以以前的登陆接口来学习,若是直接在 YAML/JSON 脚本中指定参数列表内容,那么咱们的用例可能就是这样的:测试
- 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 组测试数据,当咱们有十、100组测试数据,若是直接写在测试脚本中,可能会很不方便。咱们能够把这些测试数据都写到CSV文件,而后直接引用CSV文件,这样就方便多了,咱们的脚本也显得更加简洁。url
对于 CSV 数据文件,须要遵循以下几项约定的规则:spa
- 文件需放置在与测试用例文件相同的目录中;
- CSV 文件中的第一行必须为参数名称,从第二行开始为参数值,每一个(组)值占一行;
- 若同一个 CSV 文件中具备多个参数,则参数名称和数值的间隔符需实用英文逗号。
好比,咱们有多组登陆的数据,用户名都不同,但密码都是同样的,咱们就能够建立 username.csv,并把 用户名 这一参数写到 username.csv 中,以下:code
username niuhanyang test10101 test1010
而后在 YAML/JSON 测试用例中,就能够经过 HttpRunner 内置的 parameterize(可简写为P)函数引用 CSV 文件。orm
parameters: - username: ${P(username.csv)} # 或者 ${parameterize(username.csv)} - passwd: ["aA123456"]
**注意:**HttpRunner中,在 parameters 中指定的参数名称必须与 CSV 文件中第一行的参数名称一致。
对于具备关联性的多个参数,好比,咱们有多组登陆的数据,用户名和密码都不同,那么咱们能够建立 user.csv ,并把用户名和密码的参数写到 user.csv 中,以下:
username,passwd niuhanyang,aA123456 test10101,fasdfasfa test1010,aA123456
再修改一下 YAML 脚本:
parameters: - username-passwd: ${P(user.csv)} # 或者 ${parameterize(user.csv)}
**注意:**上面的写法是用户名密码一对一的关系,若是是按下面这样写,那就会是笛卡尔积组合的状况,产生 3 * 3 = 9 种组合。
parameters: - username: ${P(user.csv)} - passwd: ${P(user.csv)}
另外,在测试脚本中指定参数时,能够只使用部分参数,而且参数顺序无需与 CSV 文件中参数名称的顺序一致。
完整的YAML格式用例(test_csv.yml):
- config: name: parameters test request: base_url: http://api.nnzhp.cn parameters: - username-passwd: ${P(user.csv)} # 或者 ${parameterize(user.csv)} - 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]
在HttpRunner 1.x版本中,引用 CSV 数据文件(如 user.csv),须要将 user.csv 和 test_csv.yml 放在同一目录下,而后在运行用例便可。运行用例后的报告以下: