IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 06-Httprunner-参数化 -> 正文阅读

[开发测试]06-Httprunner-参数化


前言

  • 本篇来学习Httprunner中参数化–parameters关键字的使用

参数化

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

直接指定参数列表

独立参数
  • 场景:不同测试账号,使用同一个密码

示例

config:
    name: login case
    base_url: "https://postman-echo.com"
    variables:
        user: test
        password: 123456
    parameters:
        user: ["test1", "test2", "test3", "test4"]   # 使用相同变量名user, parameters优先级> variables优先级

teststeps:
-
    name: step login
    variables:
            password: 123456
    request:
        url: /api/v1/login
        method: POST
        json:
            username: $user   # 引用变量 
            password: $password
    validate:
        - eq: [status_code, 200]
关联参数
  • 对于具有关联性的多个参数,比如username和password,那么可以按照如下方式进行配置

config:
  name: test suite demo
  base_url: "https://postman-echo.com"

testcases:
-
  name: test case 1
  parameters:
    username-password:
      - [ "user1", "111111" ]
      - [ "user2", "222222" ]
      - [ "user3", "333333" ]
  testcase: /path/to/testcase1
  • 进行该配置后,测试用例在运行时就会对username和password实现数据驱动,即分别使用 {“username”: “user1”, “password”: “111111”}、{“username”: “user2”, “password”: “222222”}、{“username”: “user3”, “password”: “333333”} 运行 3 次测试,并且保证参数值总是成对使用。
笛卡尔积组合
  • 测试账号有四种[“test1”, “test2”, “test3”, “test4”],密码也有四种[“123456”, “1234567”, “12345678”, “123456789”],用笛卡尔积组合的话,就是4*4=16种组合
config:
    name: login case
    base_url: "https://postman-echo.com"
    variables:
        user: test
        password: 123456
    parameters:
        user: ["test1", "test2", "test3", "test4"]  
        passwprd :  ["123456", "1234567", "12345678", "123456789"]

teststeps:
-
    name: step login
    variables:
            password: 123456
    request:
        url: /api/v1/login
        method: POST
        json:
            username: $user   # 引用变量 
            password: $password
    validate:
        - eq: [status_code, 200]

CSV文件实现参数化

独立参数
  • 假设项目的根目录下有 data 文件夹,user.csv 位于其中,那么 user.csv 的引用描述如下

user.csv

user
test1
test2
test3
test4

yaml


config:
  name: test suite demo
  base_url: "https://postman-echo.com"

testcases:
-
  name: test case 1
  parameters:
    user: ${P(data/user.csv)}  # 通过内置的 parameterize(可简写为 P)函数引用 CSV 文件
  testcase: /path/to/testcase1
关联参数
  • 对于具有关联性的多个参数,例如 username 和 password,那么就可以创建 account.csv

account.csv

username,password
test1,111111
test2,222222
test3,333333

yaml


config:
  name: test suite demo
  base_url: "https://postman-echo.com"

testcases:
-
  name: test case 1
  parameters:
    username-password: ${P(data/account.csv)}
  testcase: /path/to/testcase1

debugtalk函数实现参数化

独立参数
  • 在 debugtalk.py 中定义一个函数,返回参数列表
    ** debugtalk.py**
def get_user_id():
    return [
        {"user_id": 1001},
        {"user_id": 1002},
        {"user_id": 1003},
        {"user_id": 1004}
    ]

yaml


config:
  name: test suite demo
  base_url: "https://postman-echo.com"

testcases:
-
  name: test case 1
  parameters:
    user_id: ${get_user_id()}  # ${函数名} 方式引用debugtalk.py中的函数
  testcase: /path/to/testcase1

关联参数

** debugtalk.py**

def get_account(num):
    accounts = []
    for index in range(1, num+1):
        accounts.append(
            {"username": "user%s" % index, "password": str(index) * 6},
        )

    return accounts

yaml


config:
  name: test suite demo
  base_url: "https://postman-echo.com"

testcases:
-
  name: test case 1
  parameters:
    username-password: ${get_account(10)}  # 生成10组数据
  testcase: /path/to/testcase1

参数化运行

  • 完成以上参数定义和数据源准备工作之后,参数化运行与普通测试用例的运行完全一致。 采用hrun命令运行自动化测试:
 hrun tests/data/demo_parameters.yml
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:45:17  更:2022-03-03 16:45:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:58:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码