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

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.jsqmd.com/news/258500/

相关文章:

  • 基于贾子智慧理论体系的中国 AI 发展与竞争国家战略(2025-2035)
  • AI 时代文明跃迁的贾子智慧评估指标体系(Kucius Wisdom Assessment System for Civilization Transition, KWACTS)
  • 能源监测管理平打造工业园区“智慧能源大脑”
  • 人类社交场合
  • 心智革命——AI搜索如何重塑人类认知与知识未来
  • 污水处理DCS数据采集组态监控系统方案
  • 基于深度学习神经网络YOLOv4目标检测的口罩识别系统
  • 群雄逐鹿——AI搜索产业竞争与商业模式变革
  • 沃尔玛购物卡回收靠谱平台TOP3推荐 - 京顺回收
  • 学Simulink--基础MPPT控制场景实例:基于Simulink的双模式MPPT(快速追踪+稳态优化)仿真
  • 基于Simulink的储能参与黑启动过程控制仿真
  • 技术深潜——AI搜索的架构演进与开源生态
  • 基于深度学习神经网络的验证码识别系统
  • 2026年AI智能办公鼠标排行榜,分析鸿容智能办公鼠标公司介绍 - 工业品牌热点
  • 基于Pytorch框架的深度学习Vision Transformer神经网络蝴蝶分类识别系统源码
  • 手把手教你学 GPU KMD--1.1:UMD、KMD 与 DDK 的协作关系——从应用到硬件的完整数据流解析
  • 吃尾巴
  • centos stream9:设置系统时区
  • 基于keras框架的LeNet/AlexNet/Vgg16深度学习神经网络花卉/花朵分类识别系统源码
  • 手把手教你学Simulink--基础MPPT控制场景实例:基于Simulink的双模式MPPT(快速追踪+稳态优化)仿真
  • 除螨除螨虫哪个品牌效果好?2026十大排行榜揭晓,照着买省心又安心! - 资讯焦点
  • 100kW微型燃气轮机Simulink建模探索
  • 2026精选:五大分龄适配儿童洗发水品牌推荐,专研温和表活,洗出顺滑秀发 - 资讯焦点
  • 基于深度学习神经网络YOLOv4目标检测的汽车车牌识别系统
  • ACPI!ACPIBuildProcessGenericComplete函数的作用是摘下当前处理的节点PCI0后ACPI!AcpiBuildRunMethodList剩9个节点
  • 2026横梁货架优选集:实力厂商排行榜,仓库货架/横梁货架/仓储货架/中型货架/重型货架/层板货架,横梁货架供应商怎么选 - 品牌推荐师
  • 基于Simulink的双模式MPPT(快速追踪+稳态优化)仿真
  • 踩下油门时混合动力车的能量分配就像打扑克——既要看当前手牌,也得算后面几步。模型预测控制(MPC)在这局游戏里当起了军师,今天咱们就拆解这背后的骚操作
  • 深圳AI智能办公鼠标服务选择哪家好,这几家值得关注 - 工业品牌热点
  • 学Simulink--基础储能管理场景实例:基于Simulink的储能参与黑启动过程控制仿真