Pytest 插件
接下来我们来学习 pytest 中插件的知识。
简介
Pytest 插件是 Python 包或模块,可以提供额外的功能、自定义行为或报告,可以根据项目的需求选择并使用不同的插件。
Pytest 插件是一些额外的 python 包或模块,它们为 pytest 提供更多功能。插件的作用可以是增强测试功能、添加新的特性,甚至修改测试的行为。比如,插件可以帮助我们控制测试用例的执行顺序、并发执行测试、生成报告等等。根据不同的需求,可以选择并使用不同的插件来提升测试的效率和质量。
Pytest 常用的插件
- 控制用例的执行顺序(重点):
pip install pytest-ordering
- 分布式并发执行测试用例(重点):
pip install pytest-xdist
- 控制用例的依赖关系(了解):
pip install pytest-dependency
- 失败重跑(了解):
pip install pytest-rerunfailures
- 多重较验(了解):
pip install pytest-assume
- 用例随机执行(了解):
pip install pytest-random-order
- 测试报告(了解):
pip install pytest-html
这里给大家列举了一些常用的 pytest 插件。比如,如果想控制测试用例的执行顺序,可以安装 pytest杠ordering 插件。如果需要分布式并发执行测试用例来加速测试,可以使用 pytest杠xdist 插件。这些插件帮助我们在测试过程中更好地管理和优化用例的执行。其他插件像 pytest杠dependency 可以用来控制测试用例的依赖关系,pytest杠rerunfailures 可以用来在失败的测试用例上进行重试,pytest杠assume 用来支持多重验证,pytest杠random杠order 可以让测试用例以随机顺序执行,pytest杠html 用来生成 HTML 格式的测试报告。这些插件可以根据项目需求灵活选择。
Pytest 插件分类
Pytest 插件可以按其功能和用途进行分类。
其实在 pytest 中,插件可以根据功能和用途的不同分为三类,分别是外部插件、本地插件和内置插件。下面我们来分别了解一下。
外部插件
通过 pip install
命令从 PyPI 或其他 Python 包索引安装的插件。
外部插件是独立于项目的,可以在项目外安装它们并在项目中引用。
例如,可以使用 pip
来安装 pytest-html
插件:pip install pytest-html
。一旦安装,可以在任何项目中使用它来生成 HTML 测试报告。
先来了解下外部插件。外部插件是通过 pip install 命令从 PyPI 或其他 python 包索引安装的插件。它们是独立于项目的,可以在任何项目中使用。比如,pytest杠html 插件用于生成 HTML 格式的测试报告,安装命令是 pip install pytest杠html。安装完成后,你就可以在任何 pytest 项目中使用它,无论你的项目是什么内容。外部插件的特点是它们是独立的,不需要在项目内部进行特殊配置,只需要在测试运行时引用即可。
本地插件
本地插件是与特定项目相关的,通常是存储在项目目录中的 conftest.py 文件中。
conftest.py 可以包含夹具(fixtures)、自定义命令行选项、标记(markers)、钩子函数等。
这些插件仅对特定项目可见,并在项目的测试中使用。它们不需要额外的安装步骤,只需在项目中定义和使用。
下面再来了解下本地插件。本地插件是和特定项目相关的,通常是存储在项目目录中的 conftest点py 文件里。这个文件可以包含很多有用的东西,比如自定义的夹具 fixture、命令行选项、标记以及钩子函数等。和外部插件不同的是,本地插件只在当前项目中有效,不需要额外安装,只需要在项目内定义并引用。这种方式非常适合定制化的需求,比如在特定项目中需要的特定功能。
内置插件
Pytest 内置了一些插件,这些插件提供了许多常见的功能和扩展。这些插件存储在 pytest 的内部目录(通常是_pytest
目录)中,并自动加载,无需额外的安装或配置。
例如,pytest.mark
就是一个内置插件。
最后我们再来了解下 pytest 本身的内置插件,这些插件提供了很多常用功能。内置插件是 pytest 自带的,存储在 下划线pytest 目录中,安装 pytest 后就自动加载,不需要额外的安装或配置。例如,pytest点mark 就是一个内置插件。
总结
- pytest 插件分类
我们来总结一下,pytest 插件有三种类型:外部插件、本地插件和内置插件。外部插件可以通过 pip install 安装,适用于多种项目;本地插件存储在项目内部,专门为项目定制;内置插件是 pytest 自带的功能,不需要额外安装,提供了很多基础和常用的功能扩展。好了,关于 pytest 的插件我们先介绍这么多。