Pytest精通指南(01)介绍与基本使用

这篇具有很好参考价值的文章主要介绍了Pytest精通指南(01)介绍与基本使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



Pytest精通指南(01)介绍与基本使用,python,第三方库探索,pytest,python,pytest,单元测试,程序人生,unittest,学习,自动化测试框架

Pytest 简介

Pytest是一个功能强大的Python测试框架,它简化了测试编写的复杂性,并提供了丰富的插件生态系统,以满足各种复杂的测试需求。

与Python内置的unittest框架相比,Pytest的语法更简洁、更易于理解,支持参数化测试、测试固件(fixtures)、断言重写等高级功能。

此外,Pytest还允许用户通过插件来扩展其功能,从而更好地适应各种项目规模和要求。

无论是在小型项目中进行简单的单元测试,还是在大型项目中进行复杂的集成测试和功能测试,Pytest都能够提供强大的支持。

它支持并发执行测试用例,可以方便地选择执行特定的测试用例集,并且提供了详细的测试报告和日志输出,帮助开发者快速定位和修复问题。

此外,Pytest还与其他流行的Python工具和库(如Selenium、Django等)无缝集成,使得自动化测试变得更加容易和高效。

Pytest 官网

官网:https://www.osgeo.cn/pytest/contents.html

Pytest精通指南(01)介绍与基本使用,python,第三方库探索,pytest,python,pytest,单元测试,程序人生,unittest,学习,自动化测试框架

Pytest 核心

Pytest测试框架的核心是Fixture和Mark

Fixture

  • Fixture是Pytest中的一个重要概念,它允许在测试用例执行前后设置和清理测试环境;
  • 可以将Fixture看作是一些预定义的、可重复使用的配置或资源,这些配置或资源可以在多个测试用例之间共享;
  • 通过使用fixture,可以更加灵活和高效地管理测试依赖和测试环境。

Mark

  • Mark是Pytest提供的一种装饰器,用于对测试用例或fixture进行标记;
    这些标记可以用来控制测试用例的执行方式,例如跳过某些测试、指定测试的执行顺序等。
    Mark提供了一种灵活的方式来管理和控制测试用例的行为。

Pytest 原理

  • 测试自动发现Pytest会自动查找和收集符合特定模式的测试文件和函数,这意味着无需手动指定要运行的测试。
  • 多种类型的测试Pytest支持多种类型的测试,包括单元测试、集成测试、端到端测试等,这使得它适用于不同规模和复杂度的项目。
  • Fixture机制:如前所述,Fixture机制允许定义和重用测试环境配置,使得测试编写更加灵活和高效。
  • 参数化测试Pytest支持参数化测试,这意味着可以使用不同的输入参数多次运行相同的测试代码,从而增加测试覆盖率和效率。
  • 丰富的插件机制Pytest具有强大的插件生态系统,这些插件可以提供各种额外功能,如覆盖率分析、测试报告生成等,使得测试过程更加全面和高效。
  • 多种执行方式Pytest支持多种执行方式,包括命令行执行、配置文件执行和插件执行等,这使得测试的执行方式非常灵活,可以根据项目需求进行定制。

Pytest精通指南(01)介绍与基本使用,python,第三方库探索,pytest,python,pytest,单元测试,程序人生,unittest,学习,自动化测试框架

Pytest 用途

Pytest的应用场景包括但不限于以下几个方面:

  • 单元测试:对程序的一个小部分或一个函数进行测试,看它是否按照预期进行工作。
  • 功能测试:确保软件的某个功能是否工作正常。
  • 回归测试:当代码有所改动时,pytest可以帮助确认改动部分是否运行良好,并且改动没有影响到其他部分的功能。
  • 集成测试:当想同时测试两个或多个组件的集成程度时,pytest可以提供强大的支持。

测试人员:可以使用Pytest来编写和执行测试用例,验证软件的功能和性能是否满足要求,并生成详细的测试报告和日志,帮助开发团队快速定位和修复问题。

开发人员:可以使用Pytest来编写单元测试,确保代码的各个单元功能正常,并在代码改动时进行回归测试,以确保改动没有引入新的问题。

Pytest 特点

  1. 易于使用和上手pytest具有与unittest相似的结构,使得测试人员能够轻松地从unittest迁移到pytest,同时保持测试的连续性和一致性。其简洁的语法和直观的测试结构使得入门变得简单快捷。
  2. 强大的Fixture机制pytestFixture提供了一种灵活的方式来管理和控制测试环境的设置和清理。它支持在测试用例执行前后进行各种资源的配置和共享,使得测试编写更加高效和可维护。
  3. 参数化测试pytest允许通过parametrize装饰器对测试用例进行参数化,这意味着可以使用不同的输入参数多次运行相同的测试用例,从而增加测试的覆盖率和可靠性。
  4. 灵活的测试控制pytest提供了skipxfail装饰器,允许测试人员在测试执行过程中跳过某些测试用例或标记预期失败的测试用例。这对于处理不稳定或依赖外部资源的测试非常有用。
  5. 失败重试机制pytest支持通过插件(如pytest-rerunfailures)实现失败测试用例的自动重试,从而提高测试的可靠性和稳定性。
  6. 广泛的兼容性pytest能够执行由noseunittest编写的测试用例,这使得它能够轻松集成现有的测试代码库,并充分利用pytest的强大功能。
  7. 选择性执行测试用例pytest允许测试人员根据标记、文件名或其他条件选择性地执行特定的测试用例,从而更加灵活地控制测试的执行范围。
  8. 丰富的插件生态系统pytest拥有一个庞大的插件生态系统,提供了许多额外的功能和工具,如测试报告生成、并行执行、测试顺序控制等。这些插件可以通过简单的安装和配置来扩展pytest的功能。
  9. 精美的测试报告pytest可以生成简洁明了的HTML测试报告,帮助测试人员快速了解测试的执行情况和结果。此外,结合Allure等第三方插件,还可以生成更加精美和详细的测试报告。
  10. 与持续集成工具的无缝集成pytest可以轻松地与持续集成工具(如Jenkins)集成,实现自动化构建、测试和报告生成。这使得测试流程更加高效和可靠,有助于提高软件的质量和交付速度。

Pytest 安装

pytest属于python的第三方库,需要额外下载安装,命令如下:

pip install pytest

Pytest 编写测试用例规则

模块 (Modules)

  • 文件名约定pytest会自动发现以test_开头或以\_test结尾的Python文件并执行其中的测试。推荐的做法是使用test_前缀加上业务名称来命名测试文件,例如test_my_feature.py

类 (Classes)

  • 类名约定:测试类应该以Test开头,并且不应包含\__init__方法。\__init__方法通常用于类的初始化,但在测试类中不需要它,因为它会干扰pytest对测试方法的识别。

方法/函数 (Methods/Functions)

  • 方法名约定:测试方法或函数应该以test_开头。pytest会自动识别并运行所有符合此命名约定的方法或函数。

包 (Packages)

  • 包名约定:对于包名,没有特定的约定。但是,每个包都应该包含一个\__init__.py文件,即使它是空的。这个文件告诉Python该目录应被视为一个包,这对于pytest发现和执行测试非常重要。

补充说明

  • 测试结构:除了上述规则外,建议将相关的测试文件组织在同一个目录下,或者使用包来组织具有相似功能的测试。这有助于保持测试代码的清晰和可维护。
  • 测试独立性:每个测试方法都应该独立运行,不依赖于其他测试的执行顺序。这有助于确保测试的可靠性和可重复性。
  • 断言:测试方法中应该包含断言语句来验证被测试代码的行为是否符合预期。断言是测试的核心,它们确保代码按照预期工作。

Pytest 编写第一条测试用例

用例代码示例

test_case_01.py文件代码

import pytest


def addition(x, y):
    return x + y


def test_01_a():
    print("正在执行 test_a 函数...")
    assert addition(3, 5) == 8


class TestClassCase01:
    def test_01_b(self):
        assert "a" in "apple"

    def test_01_c(self):
        assert "a" in "apple"


if __name__ == '__main__':
    pytest.main()

test_case_02.py文件代码

class TestCase01:

    def test_02_a(self):
        print("正在执行 test_02_a 函数...")

    def test_02_b(self):
        print("正在执行 test_02_b 函数...")

可执行测试

Pytest精通指南(01)介绍与基本使用,python,第三方库探索,pytest,python,pytest,单元测试,程序人生,unittest,学习,自动化测试框架

执行一条测试

点击任意测试用例函数的绿色按钮,用pytest解释器执行,而不是python解释器执行

Pytest精通指南(01)介绍与基本使用,python,第三方库探索,pytest,python,pytest,单元测试,程序人生,unittest,学习,自动化测试框架

执行多条测试

点击main函数的绿色按钮,或者直接右键选择pytest解释器执行

Pytest精通指南(01)介绍与基本使用,python,第三方库探索,pytest,python,pytest,单元测试,程序人生,unittest,学习,自动化测试框架

Pytest 运行方式

run模式

通过Pyton解释器来执行test_case_01.py文件;

注意:文件中带有main函数

重点pytest.main()等价于pytest.main(["./"])会收集当前目录下的所有用例并执行

Pytest精通指南(01)介绍与基本使用,python,第三方库探索,pytest,python,pytest,单元测试,程序人生,unittest,学习,自动化测试框架

test_case_01.py文件中没有main函数

Pytest精通指南(01)介绍与基本使用,python,第三方库探索,pytest,python,pytest,单元测试,程序人生,unittest,学习,自动化测试框架

pytest模式

通过pytest程序执行test_case_01.py文件

Pytest精通指南(01)介绍与基本使用,python,第三方库探索,pytest,python,pytest,单元测试,程序人生,unittest,学习,自动化测试框架

run模式扩展
  • 运行所有 pytest.main()
  • 运行指定模块 pytest.main('[-vs],','./test_case_01.py')
  • 运行指定目录 pytest.main('[-vs]'),'./')
  • 通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成

执行某个类

  • pytest.main(["-vs"],'./test_case_01.py::TestClassCase01')

执行某个方法

  • pytest.main(["-vs"],'./test_case_01.py::TestClassTest01::test_01_b')

执行模块中某个方法:

  • pytest.main(["-vs"],'./test_case_01.py::test_01_a')
命令行模式

基本运行命令:

  • pytest:运行当前目录及其子目录中所有符合测试文件命名约定的测试。

选择测试:

  • pytest test_case.py:运行指定的测试模块。
  • pytest test_directory/:运行指定目录下的所有测试。
  • pytest -k "expression":根据表达式选择测试名称匹配的测试。
  • pytest -m "marker":根据标记选择测试。

控制运行:

  • pytest -x--maxfail=num:在遇到第一个失败的测试时停止。
  • pytest --lf--last-failed:仅重新运行上次失败的测试。
  • pytest -n NUM--numprocesses=NUM:使用多进程运行测试。
  • pytest --failed-first:先运行上次失败的测试。

Pytest.main()常用命令

指定测试文件或用例

  • 文件名/文件路径:直接指定要运行的测试文件、相对路径或绝对路径。
  • 测试文件::测试类:指定要运行的测试类。
  • 测试文件::测试类::测试用例:指定要运行的特定测试用例。

通用选项

  • -v, --verbose:增加输出的详细程度。
  • -q, --quiet:减少输出的详细程度,只报告测试结果。
  • -x, --exitfirst:在第一个失败的测试后停止执行。
  • -k 表达式:根据表达式选择性地运行测试。
  • -m 标记:只运行带有指定标记的测试。
  • -s:禁用所有输出捕获,包括 print 语句。

控制输出和日志

  • –durations=N:显示最慢的N个测试用例的执行时间。
  • –showlocals:在失败的断言处显示局部变量。
  • –tb=风格:设置失败的回溯打印风格,如 auto, short, long, native, no, only_failed
  • –junitxml=path:生成JUnit-XML格式的测试报告。
  • –log-cli=true/false:在控制台打印日志。
  • –log-cli-level=级别:设置控制台日志的级别。
  • –log-cli-format=格式:设置控制台日志的格式。
  • –log-cli-date-format=格式:设置控制台日志日期的格式。
  • –log-file=path:将日志写入文件。
  • –log-file-level=级别:设置文件日志的级别。
  • –log-file-format=格式:设置文件日志的格式。
  • –log-file-date-format=格式:设置文件日志日期的格式。

控制执行流程

  • –maxfail=num:在达到指定数量的失败测试后停止执行。
  • –reruns=n:失败的测试用例重新运行n次。
  • –ff:在发现测试之前排序文件。
  • –pdb:在失败的测试后启动pdb调试器。
  • –looponfail:在失败的测试后无限循环,直到通过。

控制失败的行为文章来源地址https://www.toymoban.com/news/detail-853027.html

  • –strict:在收集阶段遇到错误时,抛出异常。
  • –ignore=path:忽略指定路径下的文件或目录。
  • –confcutdir=path:在指定路径以上不加载任何配置文件。

到了这里,关于Pytest精通指南(01)介绍与基本使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python Matplotlib 库使用基本指南

    简介 Matplotlib 是一个广泛使用的 Python 数据可视化库,它可以创建各种类型的图表、图形和可视化效果。无论是简单的折线图还是复杂的热力图,Matplotlib 提供了丰富的功能来满足我们的数据可视化需求。本指南将详细介绍如何安装、基本绘图函数以及常见图表类型的绘制方法

    2024年02月02日
    浏览(44)
  • Redis - Python 客户端基本使用指南

    参考:python 模块Redis模块,连接Redis数据库 Python 中的 Redis 客户端库允许开发者与 Redis 数据库进行交互。这些库允许在 Python 中连接到 Redis、执行命令以读取或写入数据,并处理 Redis 数据。 以下是一些常见的 Python Redis 客户端库: redis 库:是 Python 中最常用的 Redis 客户端库之

    2024年02月08日
    浏览(41)
  • 【Pytest实战】pytest 基本概念及使用大全

    😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊 座右铭:不想当开发的测试,不是一个好测试✌️。 如果感觉博主的文章还不错的话,还请点赞、收藏哦

    2024年02月12日
    浏览(46)
  • Python 包管理(pip、conda)基本使用指南

    介绍 Python 有丰富的开源的第三方库和包,可以帮助完成各种任务,扩展 Python 的功能,例如 NumPy 用于科学计算,Pandas 用于数据处理,Matplotlib 用于绘图等。在开始编写 Pytlhon 程序之前,可能需要安装一些常用的Python库,以便在编程过程中能够轻松地使用它们。 为了方便地管

    2024年02月11日
    浏览(50)
  • pydantic 库(Python 数据接口定义)基本使用指南

    pydantic 库是 python 中用于数据接口定义检查与设置管理的库。 pydantic 在运行时强制执行类型提示,并在数据无效时提供友好的错误。 具有如下优点: 易于使用: Pydantic 很容易安装与使用,并且有一个简单的 API,使得所有开发者都可以快速上手使用。 快速验证: Pydantic 快速

    2024年02月04日
    浏览(40)
  • pytest 第三方插件

    目录 前言: 顺序执行:pytest-ordering 失败重试:pytest-rerunfailures 并行执行:pytest-xdist pytest 是一个广泛使用的 Python 测试框架。它具有强大的测试运行器、测试驱动开发和测试结果可视化等功能。除此之外,pytest 还支持许多第三方插件,这些插件可以为测试带来更多的便利和

    2024年02月16日
    浏览(43)
  • 【Elasticsearch】Elasticsearch 从入门到精通(一):基本介绍

    《 Elasticsearch 从入门到精通 》共包含以下 2 2 2 篇文章: Elasticsearch 从入门到精通(一):基本介绍 Elasticsearch 从入门到精通(二):基础使用 😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖

    2024年04月23日
    浏览(32)
  • 微服务01-基本介绍+注册中心EureKa

    服务集群 :一个请求由多个服务完成,服务接口暴露,以便于相互调用; 注册中心 :每个服务的状态,需要进行维护,我们可以在注册中心进行监控维护服务; 配置中心 :这些服务的配置我们都放在配置中心中配置,方便拉取配置信息,减少代码冗余; 微服务优点 : 耦

    2024年02月10日
    浏览(35)
  • pytest -- 基本使用详解

    pytest  是一个功能强大且易于使用的 Python 测试框架,用于编写单元测试、集成测试和功能测试。 它提供了丰富的功能和灵活的用法,使得编写和运行测试变得简单而高效。 --------------- pytest框架优点: ❶ 简单易用 : pytest  的语法非常简洁清晰,对于编写测试用例来说非常

    2024年01月18日
    浏览(35)
  • FastAPI 库(Python 的 Web 框架)基本使用指南(一)

    参考文档: 中文文档 轻松上手Python的Web神器:FastAPI教程 FastAPI 是一个基于 Python 的现代 Web 框架,它具有快速构建高性能 API 的特点。 FastAPI 关键特性: 快速:可与 NodeJS 和 Go 并肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。 高效编码:提高功能开发

    2024年02月04日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包