5分钟Pytest快速入门

🍅点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

Pytest的入门操作使用

Pytest特点

  1. 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考

  2. 能够支持简单的单元测试和复杂的功能测试

  3. 支持参数化

  4. 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败

  5. 支持重复执行(rerun)失败的 case

  6. 支持运行由 nose, unittest 编写的测试 case

  7. 可生成html报告

  8. 方便的和持续集成工具jenkins集成

  9. 可支持执行部分用例

  10. 具有很多第三方插件,并且可以自定义扩展

安装

直接执行 如下命令即可安装pytest

pip install pytest

我们还需要产生测试报表,所以要安装一个第三方插件pytest-html,执行如下命令安装

pip install pytest-html
def func(x): return x + 3 def test_answer(): assert func(3) == 6 class TestClass: def test_01(self): print('\n用例01') assert 1 == 1 def test_02(self): print('\n用例02') assert 2 == 2 def test_03(self): print('\n用例03') assert 3 == 2

然后,cmd进入当前文件目录,直接执行

pytest
PS D:\Lemon\py45\webatuotest\pytest_learn> pytest .\test_learn01.py ========================================================== test session starts ========================================================== platform win32 -- Python 3.9.7, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 rootdir: D:\Lemon\py45\webatuotest\pytest_learn plugins: allure-pytest-2.9.43, anyio-3.3.2, html-3.1.1, metadata-1.11.0 collected 4 items test_learn01.py ...F [100%] =============================================================== FAILURES ================================================================ ___________________________________________________________ TestClass.test_03 ___________________________________________________________ self = <test_learn01.TestClass object at 0x0000023FFB6743D0> def test_03(self): print('\n用例03') > assert 3 == 2 E assert 3 == 2 test_learn01.py:27: AssertionError --------------------------------------------------------- Captured stdout call ---------------------------------------------------------- 用例03 ======================================================== short test summary info ======================================================== FAILED test_learn01.py::TestClass::test_03 - assert 3 == 2 ====================================================== 1 failed, 3 passed in 0.21s ====================================================== PS D:\Lemon\py45\webatuotest\pytest_learn>

注意:

  • 如果只执行pytest,会查找当前目录及其子目录下以test_*.py 或 *_test.py文件,找到文件后,在文件中找到以 test 开头函数并执行

  • 如果只想执行某个文件,可以pytest start.py

  • 加上-q,就是显示简单的结果:pytest -q start.py

  • 如果我们希望 显示测试代码中print的内容,因为这些打印语句在调试代码时很有用,可以加上命令行参数 -s

    如下

    pytest -s
  • 如果我们希望得到更详细的执行信息,包括每个测试类、测试函数的名字,可以加上参数 -v,这个参数可以和 -s 合并为 -sv

    如下

    pytest -sv
  • 为了防止pytest到其他目录中找测试用例项,执行测试时,我们可以在命令行加上目标目录 cases ,就是这样

pytest cases
pytest运行方式 测试类主函数模式 # test_abc.py import pytest # 引入pytest包 def test_a(): # test开头的测试函数 print("------->test_a") assert 1 # 断言成功 def test_b(): print("------->test_b") assert 0 # 断言失败 if __name__ == '__main__': # pytest.main("-s test_abc.py") 早期版本是这样的执行的 pytest.main(["-s", "test_abc.py"]) # 调用pytest的main函数执行测试

命令行模式运行

# pytest 文件路径/测试文件名pytest ./test_abc.py

Pytest用例的设计原则

Pytest写用例时候,一定要按照下面的规则去写,否则不符合规则的测试用例是不会执行的

  • 文件名以test_*.py文件和*_test.py

  • 以 test_ 开头的函数

  • 以 Test 开头的类,不能包含__init__ 方法

  • 所有的包 package 必须要有__init__.py文件

Pytest之并发执行

在Pytest测试框架中提供了pytest-xdist可以并发执行测试用例,来提升测试用例的执行速度。通常的情况下,测试用例的执行都是依据一定的规则来按顺序进行执行,这样的结果是每次执行的时候有的资源就只能被一个测试用例占用,而达不到测试用例执行的时候资源的共享,插件pytest-xdist插件可以很好的解决这个问题,一方面资源达到共享,基于第一点的考虑,也就达到了第二点的提升了测试执行的效率。

  • 安装pytest-xdist插件 pip install pytest-xdist

  • 使用 pytest -n auto 默认自动检查系统cpu个数,然后进行并发

  • 也可以指定并发数 pytest -n 2 即并发数2执行

pytest的重复执行

安装:pip3 install pytest-repeat

命令行方式

使用–count命令行选项来指定您要运行一个或多个测试的次数:

pytest --count = 10 test.py

代码方式

如果要在代码中将测试标记为重复多次,则可以使用

# @pytest.mark.repeat(count)装饰器: import pytest @pytest.mark.repeat(3) def test_example(): print("执行成功")

重复测试直到失败

有时候,功能模块不稳定,会存在一些错误,可以将 -x 与 pytest-repeat 一起用,强制运行器在第一次测试失败时停止

py.test --count=1000 -x test.py

repeat-scope的使用

命令行参数
作用:能够覆盖默认的测试用例执行顺序,相似fixture的scope参数

  • function:默认,范围针对每一个用例重复执行,再执行下一个用例

  • class:以class为用例集合单位,重复执行class里面的用例,再执行下一个

pytest -s --count=2 --repeat-scope=class test_Class.py
  • module:以模块为单位,重复执行模块里面的用例,再执行下一个

pytest -s --count=2 --repeat-scope=moudle test_Class.py
  • session:重复整个测试会话,即全部测试用例的执行一次,而后再执行第二次

产生报告

前面在安装pytest,我们也安装了pytest-html插件,这个插件就是用来产生测试报告的。

要产生报告,在命令行加上 参数--html=report.html --self-contained-html,如下

pytest cases --html=report.html --self-contained-html

这样就会产生名为report.html的测试报告文件,可以在浏览器中打开

写在最后

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

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1173862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于贾子智慧理论体系的中国 AI 发展与竞争国家战略(2025-2035)

智慧主导智能&#xff1a;基于贾子智慧理论的中国AI发展与竞争国家战略&#xff08;2025‑2035&#xff09; 摘要 本战略以贾子智慧“四大支柱五五三三定律”为框架&#xff0c;确立“智慧主导智能、可控优于领先”的核心原则&#xff0c;旨在构建区别于美国技术霸权的新范式。…

AI 时代文明跃迁的贾子智慧评估指标体系(Kucius Wisdom Assessment System for Civilization Transition, KWACTS)

AI 时代文明跃迁的贾子智慧评估指标体系&#xff08;Kucius Wisdom Assessment System for Civilization Transition, KWACTS&#xff09;本体系以贾子智慧理论体系的四大支柱 五五三三定律为核心&#xff0c;融合 “认知 - 技术 - 能源 - 经济 - 社会 - 文明” 六维协同逻辑&…

能源监测管理平打造工业园区“智慧能源大脑”

场景痛点&#xff1a;随着“双碳”目标深入推进及能源成本持续攀升&#xff0c;传统工业园区普遍面临用能“黑箱”困境&#xff1a;能源数据分散、依赖人工抄表、无法实时掌握整体与各企业用能情况&#xff1b;缺乏有效的能效分析与预警手段&#xff0c;用能浪费严重&#xff1…

人类社交场合

人类社交场非逻辑、非系统特征列表特征类别特征名称核心悖论/模糊性表现形式/潜规则社会功能运作逻辑权力关系映射情感维度风险与代价文化差异性关系距离的模糊弹性可进可退的距离艺术既需要亲密又需要边界&#xff0c;距离无固定刻度1. 身体距离的微妙调整&#xff08;半步之差…

心智革命——AI搜索如何重塑人类认知与知识未来

引言&#xff1a;当外部记忆成为认知器官公元前4000年&#xff0c;苏美尔人发明了文字&#xff0c;人类开始了将记忆外化的历程。公元前300年&#xff0c;亚历山大图书馆试图收集所有人类知识。1440年&#xff0c;古登堡印刷机让知识大规模复制成为可能。1998年&#xff0c;谷歌…

污水处理DCS数据采集组态监控系统方案

某污水处理厂采用DCS系统对污水处理流程进行集中监控与控制&#xff0c;具备手动、自动、维护等多种运行模式&#xff0c;并在中控室实现工艺参数的实时展示与设备状态管理。为进一步提升管理效率与智能化水平&#xff0c;现需对现有系统进行数字化升级&#xff0c;将污水处理关…

群雄逐鹿——AI搜索产业竞争与商业模式变革

引言&#xff1a;万亿美元战场的全新博弈 2023-2024年&#xff0c;全球科技巨头在AI搜索领域的总投入超过2000亿美元。这个数字不仅体现了技术转型的规模&#xff0c;更揭示了一个残酷现实&#xff1a;传统搜索市场每年超过3000亿美元的广告收入蛋糕正在重新分割&#xff0c;而…

基于深度学习神经网络YOLOv4目标检测的口罩识别系统

第一步&#xff1a;YOLOv4介绍 YOLOv4是一种目标检测算法&#xff0c;它在精度和速度之间取得了最佳的平衡。它是YOLO&#xff08;You Only Look Once&#xff09;系列算法的最新版本&#xff0c;通过将目标检测任务转化为一个回归问题&#xff0c;实现了实时目标检测。YOLOv4…

沃尔玛购物卡回收靠谱平台TOP3推荐 - 京顺回收

在闲置卡券回收领域,沃尔玛购物卡因流通性强、受众广泛,一直是热门品类。2025年12月数据显示,专业回收平台市场份额达35%,且用户投诉率比二手平台低62%。本文从平台资质、回收效率、用户口碑三大维度,为大家推荐三…

学Simulink--基础MPPT控制场景实例:基于Simulink的双模式MPPT(快速追踪+稳态优化)仿真

目录 手把手教你学Simulink--基础MPPT控制场景实例:基于Simulink的双模式MPPT(快速追踪+稳态优化)仿真 一、引言:为什么需要双模式MPPT?——光伏系统“效率与响应”的平衡术 二、核心原理:双模式MPPT的“切换逻辑+控制算法” 1. MPPT基本原理回顾 2. 双模式MPPT设计思…

技术深潜——AI搜索的架构演进与开源生态

引言&#xff1a;从黑箱魔法到开放工程2024年初&#xff0c;Meta发布Llama 3的当天&#xff0c;全球范围内出现了超过5000个基于该模型的衍生项目&#xff0c;其中三分之一与搜索相关。这一事件标志着AI搜索技术发展的重要转折&#xff1a;从少数实验室的专有魔法&#xff0c;转…

基于Simulink的储能参与黑启动过程控制仿真

目录 手把手教你学Simulink 一、引言:什么是“黑启动”?为什么需要储能? 二、黑启动典型流程 三、系统整体架构(Simulink 模型) 控制模式切换: 四、Simulink 建模全流程 步骤1:储能与变流器建模 步骤2:V/f 控制器设计(核心) A. 电压外环(PI 控制) B. 电流…

2026年AI智能办公鼠标排行榜,分析鸿容智能办公鼠标公司介绍 - 工业品牌热点

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家AI办公营销工具领域的标杆企业,为企业与个人选型提供客观依据,助力精准匹配适配的服务伙伴。 TOP1 推荐:深圳市南方网通网络技术开发有限公司 推荐指数:★…

基于深度学习神经网络的验证码识别系统

第一步&#xff1a;建立验证码数据库 目前演示的是四位验证码&#xff0c;里面所包含的字符类别有62种 第二步&#xff1a;搭建模型 本文利用一个简单的cnn模型&#xff0c;进行端到端识别&#xff1a; class CNN(nn.Module):def __init__(self, num_class62, num_char4):su…

基于Pytorch框架的深度学习Vision Transformer神经网络蝴蝶分类识别系统源码

第一步&#xff1a;准备数据 6种蝴蝶数据&#xff1a;self.class_indict ["曙凤蝶", "麝凤蝶", "多姿麝凤蝶", "旖凤蝶", "红珠凤蝶", "热斑凤蝶"]&#xff0c;总共有900张图片&#xff0c;每个文件夹单独放一种…

手把手教你学 GPU KMD--1.1:UMD、KMD 与 DDK 的协作关系——从应用到硬件的完整数据流解析

目录 UMD、KMD 与 DDK 的协作关系 ——从应用到硬件的完整数据流解析 一、核心角色定义 二、典型数据流:从应用调用到 GPU 执行 三、各层交互的关键机制 1. UMD ↔ KMD:通过私有 IOCTL 或 WDDM Escape 接口 2. 内存共享:如何让 UMD 描述的数据被 GPU 访问? 3. 同步…

吃尾巴

在编程和计算机科学中,我们提到的“吃尾巴”通常是指 “尾递归” (Tail Recursion) 或者更形象的 “衔尾蛇”式的数据结构。 根据语境的不同,它主要有以下几种含义:1. 最常见的意指:尾递归 (Tail Recursion) 在递归…

centos stream9:设置系统时区

一,设置时区: 列出时区: # timedatectl list-timezones 设置时区: # timedatectl set-timezone Asia/Shanghai 设置完成后: # timedatectl statusLocal time: Sat 2026-01-17 14:07:33 CSTUniversal time: Sat 2026…

手把手教你学Simulink--基础MPPT控制场景实例:基于Simulink的双模式MPPT(快速追踪+稳态优化)仿真

目录 手把手教你学Simulink--基础MPPT控制场景实例:基于Simulink的双模式MPPT(快速追踪+稳态优化)仿真 一、引言:为什么需要双模式MPPT?——光伏系统“效率与响应”的平衡术 二、核心原理:双模式MPPT的“切换逻辑+控制算法” 1. MPPT基本原理回顾 2. 双模式MPPT设计思…

基于keras框架的LeNet/AlexNet/Vgg16深度学习神经网络花卉/花朵分类识别系统源码

第一步&#xff1a;准备数据 五种花卉数据&#xff1a;“雏菊”、“蒲公英”、“玫瑰”、“向日葵”、“郁金香”&#xff0c;总共有2671张图片 将数据以A_B.jpg的格式进行标定&#xff0c;A为花朵名字&#xff0c;B为相应花类别的第几张 第二步&#xff1a;搭建模型 本文选择…