当前位置: 首页 > 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.pydef test_addition():assert 2 + 2 == 4def test_subtraction():assert 5 - 3 == 2def test_multiplication():assert 3 * 4 == 12def 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)、测试覆盖率等等。之后会进一步分享,点个赞给小编更多动力。

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

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

相关文章:

  • Android修行手册-ViewPager定制页面切换以及实现原理剖析
  • Linux - 系统调用(syscall)
  • opencv- CLAHE 有限对比适应性直方图均衡化
  • 【LeetCode二叉树进阶题目】606. 根据二叉树创建字符串,102. 二叉树的层序遍历,107. 二叉树的层序遍历 II
  • docker network容器网络通信
  • Arrays类讲解
  • 使用bard分析视频内容
  • 3、点亮一个LED
  • Redis的性能,哨兵模式,集群,
  • Selenium 4.11 正式发布--再也不用手动更新chrome driver 了
  • 发挥云计算潜力:Amazon Lightsail 与 Amazon EC2 的综述
  • Spring Boot单元测试
  • Qt 软件调试(一) Log日志调试
  • 腾讯云 小程序 SDK对象存储 COS使用记录,原生小程序写法。
  • 初学vue3与ts:路由跳转带参数
  • 【剑指offer】让抽象问题具体化
  • java 多线程基础, 我觉得还是有必要看看的
  • laravel with 查询列表限制条数
  • linux学习笔记
  • ReactNativeweexDeviceOne对比
  • Sequelize 中文文档 v4 - Getting started - 入门
  • 从伪并行的 Python 多线程说起
  • 对超线程几个不同角度的解释
  • 基于axios的vue插件,让http请求更简单
  • 基于web的全景—— Pannellum小试
  • 技术发展面试
  • 让你的分享飞起来——极光推出社会化分享组件
  • 设计模式(12)迭代器模式(讲解+应用)
  • 实现菜单下拉伸展折叠效果demo
  • 事件委托的小应用
  • 微信小程序--------语音识别(前端自己也能玩)
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • ${ }的特别功能
  • $GOPATH/go.mod exists but should not goland
  • (2)STM32单片机上位机
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (力扣题库)跳跃游戏II(c++)
  • (论文阅读40-45)图像描述1
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)【Hibernate总结系列】使用举例
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)Sql Server 保留几位小数的两种做法
  • .FileZilla的使用和主动模式被动模式介绍
  • .gitignore文件—git忽略文件
  • .md即markdown文件的基本常用编写语法
  • .Net Redis的秒杀Dome和异步执行
  • .net 使用ajax控件后如何调用前端脚本
  • .NET企业级应用架构设计系列之应用服务器