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

Python 测试框架 Pytest 的入门


 简介

pytest 是一个功能强大而易于使用的 Python 测试框架。它提供了简单的语法和灵活的功能,用于编写和组织测试代码。

1、简单易用:pytest 的语法简洁明了,使得编写测试用例更加直观和易于理解。它使用 assert 语句来验证预期结果,让测试代码更加简洁易读。

2、自动发现测试:pytest 能够自动发现并执行测试文件和测试函数。它遵循命名规则(以 “test_” 开头的文件和函数)来查找测试用例,无需手动指定。

3、丰富的断言支持:pytest 提供了丰富的断言函数,用于比较、验证预期结果和实际结果是否一致。这使得编写断言更加简单和直观。

4、夹具 (fixture):夹具是 pytest 的一个强大功能,用于在测试用例之前和之后执行一些准备和清理操作。夹具可以帮助创建模拟对象、设置测试环境、共享资源等。

5、参数化测试:pytest 支持参数化测试,允许使用不同的输入参数运行同一个测试用例。这可以大大减少编写重复测试代码的工作量。

6、插件系统:pytest 提供了丰富的插件生态系统,可以扩展其功能。可以使用插件来增强测试报告、生成覆盖率报告、集成其他测试工具等。

7、与其他测试框架的兼容性:pytest 可以与其他流行的测试框架(例如 unittest)兼容,因此可以逐步迁移现有的测试代码到 pytest。

pytest 安装

安装 pytest首先,确保已经安装了 Python,并使用 pip 包管理器安装 pytest。
打开终端并输入以下命令:

pip install pytest

验证安装结果:

pytest --version

在这里插入图片描述

pytest执行

步骤 1:

创建测试文件在项目文件夹中,创建一个以 “test_” 开头的 Python 文件,注意:测试文件名要符合test_.py或_test.py格式(例如 “test_calculator.py”)

步骤 2:

编写测试用例在测试文件中,可以定义一个或多个测试函数,每个函数对应一个测试用例。

# test_calculator.py

def test_addition():
    assert 2 + 2 == 4

def test_subtraction():
    assert 5 - 3 == 2

def test_multiplication():
    assert 3 * 4 == 12

def test_division():
    assert 10 / 2 == 5

在每个测试函数中,使用关键字 assert 来判断预期结果与实际结果是否一致。如果断言失败,pytest 将显示错误信息,并将测试标记为失败。

步骤 3:

运行测试在终端中,切换到项目文件夹,并运行以下命令来执行测试:

pytest

pytest 将自动发现并运行测试文件。将看到一份测试结果报告,其中包含每个测试用例的状态(通过、失败或跳过)以及详细的错误信息(如果有的话)。

步骤 4:

使用命令行选项pytest 提供了许多命令行选项,以便可以根据需要自定义测试运行。以下是一些常用的选项:

运行特定目录下的测试文件:

pytest path/to/tests

运行特定测试文件中的某个测试函数:

pytest path/to/tests/test_module.py::test_function

显示详细的打印输出:

pytest -s

生成 JUnit XML 报告:

pytest --junitxml=path/to/report.xml

以上只是 pytest 的一些基本用法。pytest 还具有更高级的功能,例如参数化测试、夹具 (fixture)、测试覆盖率等等。之后会进一步分享,点个赞给小编更多动力。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

相关文章:

  • 如何将本地websocket发布至公网并实现远程访问?
  • 十大排序之计数排序、桶排序、基数排序(详解)
  • Android YUV存储方式
  • 百度AI布局:从财报看百度的核心竞争力和未来发展方向
  • 如何找出excel中两列数据中不同的值(IF函数的用法)
  • 分布式事务seata的AT模式介绍
  • 【点云surface】Poisson表面重建
  • 【opencv】计算机视觉:实时目标追踪
  • 竞赛项目 车位识别车道线检测 - python opencv
  • 【OpenCV实现图像:使用OpenCV生成拼图效果】
  • Springboot websocket前端无法访问到,Websocket因AOP代理 前端无法请求到
  • 五种多目标优化算法(MOJS、NSGA3、MOGWO、NSWOA、MOPSO)求解微电网多目标优化调度(MATLAB代码)
  • Tomcat实现WebSocket即时通讯 Java实现WebSocket的两种方式
  • GEE:梯度提升树(Gradient Boosting Tree)分类教程(样本制作、特征添加、训练、精度、参数优化、贡献度、统计面积)
  • letcode::数组中的第k个最大元素
  • 软件设计先进性之虚拟化技术的应用
  • 三、Keil安装芯片包、下载固件库、建立STM32工程模板
  • Ceres使用
  • 数据结构总复习
  • Github Copilot AI编码完成工具
  • 明查|印度空军“又有一架战机被巴基斯坦击落,飞行员被俘”?
  • 大外交|中美联合声明拉升全球股市,专家:中美相向而行为世界提供确定性
  • 长沙查处疑似非法代孕:有人企图跳窗,有女子被麻醉躺手术台
  • 季子文化与江南文化的根脉探寻与融合
  • 武汉旅游体育集团有限公司原党委书记、董事长董志向被查
  • 体验中国传统文化、采购非遗文创,波兰游客走进上海市群艺馆