Fork me on GitHub

httprunner 4.x学习 - 09参数化parameters

前言

实现参数化使用parameters 关键字,数据源有3种方式:

  1.在yaml 文件中直接写测试数据源

  2.测试数据源写到csv文件

  3.自定义函数,函数返回列表形式数据

参数化说明

参数化分两种情况:

  1.单个参数进行参数化:如账号不一样,但密码一样,这时把账号作为单个参数名

  2.关联性参数化,指的是把多参数进行同时参数化,采用短横线(-)进行连接:

   如不同账号对应不同密码:

config:
  name: 关联性参数化案例
  parameters:
    username-password:
      - [ admin1, "123456" ]
      - [ admin1, "123456" ]
      - [ admin1, "123456" ]
      - [ admin1, "123456" ]

参数化时,有三种数据源,适合不同的场景:

数据源场景
YAML/JSON 文件中指定参数列表 最为简单,适合参例表比较少的场景。
通过内置的 parameterize(可简写为P)函数引用 CSV 文件 该种方式需要准备 CSV 数据文件,适合数据量比较大的情况
调用 debugtalk.py 中自定义的函数生成参数列表 该种方式最为灵活,可通过自定义 Python 函数实现任意场景的数据驱动机制,当需要动态生成参数列表时也需要选择该种方式

三种方式可根据实际项目需求进行灵活选择,同时支持多种方式的组合使用。

单个参数进行参数化

密码统一设置为123456,参数username账号数据,设置对应的值 ["admin1", "admin2", "admin3", "admin4"],定义单个参数用variables,定义参数化用parameters

config:
  name: 案例
  parameters:
    username: [ admin1, admin2, admin3, admin4 ]
teststeps:
-
  name: post
  request:
    method: POST
    url: ${ENV(base_url)}/login
    json:
      username: ${username}
      password: "123456"

  validate:
    - eq: [status_code, 200]
    - eq: [headers."Content-Type", "application/json"]

运行:hrp run testcases\login_imos.yml --gen-html-report 生成4条case

关联性参数化

几组账号密码中,如果不同账号对应不同密码,这时候就得用关联性参数化了:

config:
  name: 关联性参数化案例
  parameters:
    username-password:
      - [ admin1, "123456" ]
      - [ admin2, "123456" ]
      - [ admin3, "123456" ]
      - [ admin4, "123456" ]

teststeps:
-
  name: post
  request:
    method: POST
    url: ${ENV(base_url)}/login
    json:
      username: ${username}
      password: ${password}

  validate:
    - eq: [status_code, 200]
    - eq: [headers."Content-Type", "application/json"]

同时会生成四条case:

笛卡尔积组合

假如测试用例中定义了多个参数,那么测试用例在运行时会对参数进行笛卡尔积组合,覆盖所有参数组合情况。

账号有4种[admin1, admin2, admin3, admin4],

密码有4种 ["123456", "123456", "123456", "123456"]

用笛卡尔积组合的话,就是4*4=16种组合

config:
  name: 关联性参数化案例
  parameters:
    username: [admin1, admin2, admin3, admin4]
    password: ["123456", "123456","123456","123456"]

teststeps:
-
  name: post
  request:
    method: POST
    url: ${ENV(base_url)}/login
    json:
      username: ${username}
      password: ${password}

  validate:
    - eq: [status_code, 200]
    - eq: [headers."Content-Type", "application/json"]

 

执行用例:hrp run testcases\login_imos.yml --gen-html-report 查看报告总有16个case生成:

 

posted @ 2024-04-22 16:32  测栈云  阅读(22)  评论(0编辑  收藏  举报