当前位置: 首页 > news >正文

【pytest】pytest` 中几种常用的参数化方法

pytest 是一个强大的 Python 测试框架,它提供了多种参数化测试的方法。参数化测试允许你使用不同的输入集来运行相同的测试逻辑,从而确保代码在各种条件下都能正常工作。以下是 pytest 中几种常用的参数化方法:

1. 使用 @pytest.mark.parametrize 装饰器

这是 pytest 中最常用的参数化方法。你可以使用 @pytest.mark.parametrize 装饰器来指定测试函数的参数和对应的值。

示例:

import pytest@pytest.mark.parametrize("input, expected", [(1, 2),(2, 4),(3, 6),
])
def test_multiplication(input, expected):assert input * 2 == expected

在这个例子中,test_multiplication 函数会被调用三次,每次使用不同的 (input, expected) 对作为参数。

2. 使用 pytest-cases 插件

pytest-cases 是一个第三方插件,它提供了更强大和灵活的参数化方法。你可以使用它来定义和组合测试用例,并将它们作为参数传递给测试函数。

安装:

pip install pytest-cases

示例:

import pytest
from pytest_cases import case, parametrize_with_cases@case(id="case1")
def case_data1():return 1, 2@case(id="case2")
def case_data2():return 2, 4@parametrize_with_cases("input, expected", cases=[case_data1, case_data2])
def test_multiplication(input, expected):assert input * 2 == expected

在这个例子中,我们使用了 pytest-cases 插件来定义了两个测试用例 case_data1case_data2,并将它们作为参数传递给 test_multiplication 函数。

3. 使用 pytest-subtests 插件

pytest-subtests 插件允许你在一个测试函数中运行多个子测试,每个子测试都有自己的输入和预期输出。这对于测试具有多个分支或条件的函数非常有用。

安装:

pip install pytest-subtests

示例:

import pytest
from pytest_subtests import SubTestsdef test_multiplication():with SubTests() as subtests:for input, expected in [(1, 2), (2, 4), (3, 6)]:with subtests.test(input=input, expected=expected):assert input * 2 == expected

在这个例子中,我们使用 pytest-subtests 插件在一个测试函数中运行了多个子测试。每个子测试都使用不同的 (input, expected) 对作为参数。

这些是 pytest 中常用的参数化方法。你可以根据你的具体需求选择适合你的方法来进行参数化测试。

http://www.lryc.cn/news/329754.html

相关文章:

  • 设计模式-装饰者模式在Java中使用实例-打印发票装饰抬头和脚注
  • parallel linux虚拟机没有root权限
  • 科技下乡:数字乡村改变乡村生活方式
  • 【GitLab】Ubuntu使用宝塔安装GitLab最新社区版
  • C++入门(2)
  • Prometheus +Grafana +node_exporter可视化监控Linux + windows虚机
  • 腾讯云容器与Serverless的融合:探索《2023技术实践精选集》中的创新实践
  • python 字典练习
  • Postman进阶功能实战演练
  • Flink基于Hudi维表Join缺陷解析及解决方案
  • 3.31学习总结
  • Android Studio控制台输出中文乱码问题
  • itextPdf生成pdf简单示例
  • 【Linux系列】tree和find命令
  • AI预测福彩3D第23弹【2024年4月1日预测--第4套算法重新开始计算第9次测试】
  • Java常见限流用法介绍和实现
  • 算法——图论:判断二分图(染色问题)
  • 三步提升IEDA下载速度——修改IDEA中镜像地址
  • CentOS7 RPM升级支持BBR TCP/CC的内核版本
  • 文本向量模型BGE与BGE-M3
  • 【黑马头条】-day04自媒体文章审核-阿里云接口-敏感词分析DFA-图像识别OCR-异步调用MQ
  • 新能源充电桩站场AI视频智能分析烟火检测方案及技术特点分析
  • springboot集成logback-spring.xml文件
  • centos7 安装 nginx
  • 29. UE5 RPG应用GamplayAbility
  • http和https的区别!
  • 使用AOP实现打印日志
  • 2024年新算法-冠豪猪优化算法(CPO),CPO-RF-Adaboost,CPO优化随机森林RF-Adaboost回归预测-附代码
  • 浅谈高阶智能驾驶-NOA领航辅助的技术与发展
  • 大模型 智能体 智能玩具 智能音箱 构建教程 wukong-robot