httprunner测试框架6--parameters参数化

parameters参数化

用variables声明变量时对应值只有一个,而参数化是多个值,存放在list里面。做自动化测试肯定是离不开参数化的。

登录参数化

比如有四组测试登录用的账号和密码,账号为test1, test2, test3, test4,密码统一为123456。
对user账号数据进行参数化,,设置对应的值[‘test1’, ‘test2’, ‘test3’, ‘test4’],用parameters关键字进行参数化。

- config:
    name: test API
    parameters:
      - user: ['test1', 'test2', 'test3', 'test4']
      - psw: ['123456']
- test:
    name: login case
    request:
      url: http://127.0.0.1:9000/api/v1/login/
      method: POST
      headers:
        Content-Type: application/json
      json:
        username: $user
        password: $psw
    validate:
      - eq: [status_code, 200]

运行用例会发现,会出现4条测试用例
httprunner测试框架6--parameters参数化_第1张图片

关联性参数化

还是上面的案例,假设密码不统一,就需要一个账号对应一个密码,这种一一对应的关系,可以用关联性的参数化

- config:
    name: test API
    parameters:
      - user-psw:
          - ['test1', '123456']
          - ['test2', '123456']
          - ['test3', '123456']
          - ['test4', '123456']
- test:
    name: login case
    request:
      url: http://127.0.0.1:9000/api/v1/login/
      method: POST
      headers:
        Content-Type: application/json
      json:
        username: $user
        password: $psw
    validate:
      - eq: [status_code, 200]

笛卡尔积组合

假设登录的异常测试场景是这样的:
1、用户名和密码都为空
2、用户名为空,密码不为空
3、用户名正确,密码为空
4、用户名正确,密码错误
既账号有两种情况 user:[’ ‘,‘test’] , 密码有两种情况psw:[’ ', ‘1111111’]
这种组合情况就需要用到笛卡尔积组合。注意:只适用response返回结果一致的情况

- config:
    name: test API
    parameters:
      - user: [' ', 'test']
      - psw: [' ', '111111']
- test:
    name: login case
    request:
      url: http://127.0.0.1:9000/api/v1/login/
      method: POST
      headers:
        Content-Type: application/json
      json:
        username: $user
        password: $psw
    validate:
      - eq: [status_code, 200]
      - eq: [content.code, 3003]
      - eq: [content.msg, '账号或密码不正确']

httprunner测试框架6--parameters参数化_第2张图片
点开详情,发现request请求的body部分分别为: {‘username’: ‘’, ‘password’: ‘’}、{‘username’: ‘’, ‘password’: ‘111111’}、 {‘username’: ‘test’, ‘password’: ‘’}、 {‘username’: ‘test’, ‘password’: ‘111111’}

参数化之引用外部 csv 文件

如果测试数据是放在yaml文件中,可以用上面所说的进行参数化设置。但如果测试数据非常多的时候,我们会把测试数据写到csv文件,就需要引用CSV文件,读取测试数据。

CSV文件数据规则:

  • 文件需要放置在测试用例文件相同的目录中
  • CSV文件中的第一行必须为参数名称,从第二行开始为参数值,每组值占一行
  • 若同一行CSV文件中具有多个参数,则参数名称和数值的间隔符需要用“英文逗号”隔开。
    比如在CSV文件中存放user和psw数据
    user_psw.csv文件测试数据
user,psw
test1,123456
test2,123456
test3,123456
test4,123456

yaml文件

- config:
    name: test API
    parameters:
      - user-psw: ${P(user_psw.csv)} # 也可以 - user-psw: ${parameterize(user_psw.csv)}
    # 如果csv文件中只有一个user参数,则为 - user: ${P(user.csv)}
- test:
    name: login case
    request:
      url: http://127.0.0.1:9000/api/v1/login/
      method: POST
      headers:
        Content-Type: application/json
      json:
        username: $user
        password: $psw
    validate:
      - eq: [status_code, 200]
      - eq: [content.msg, 'login success!']

你可能感兴趣的:(httprunner)