跳转到主要内容

pytest插件,用于查找测试之间的依赖关系

项目描述

PyPI version Python versions Test suite Code coverage

pytest插件,用于查找测试之间的依赖关系。


pytest插件是用Cookiecutter以及@hackebrotcookiecutter-pytest-plugin模板生成的。

摘要

测试通常不应相互依赖。为了确保这一点,通常使用像pytest-randomlypytest-reverse这样的插件。这些插件会查找依赖的测试,但找到它们依赖的具体测试是您的工作。

插件的目标是自动化这项任务。首先通过正向和反向运行所有测试并检查是否在一种顺序下执行测试会失败,而在另一种顺序下不会失败来查找依赖关系。这将找到大多数(但不全是)测试依赖关系(与pytest-reverse相同的方式)。如果找到任何依赖测试,则使用二分搜索运行所有测试的子集的更多测试,直到找到导致另一个测试失败的测试。

安装

您可以通过pipPyPI安装pytest-find-dependencies

$ pip install pytest-find-dependencies

使用方法

如果已安装插件,可以通过添加pytest选项--find-dependencies来使用。运行所有必要的测试后,所有找到的依赖项都会列出。以下是一个示例:

=================================================
Run dependency analysis for 7 tests.
Executed 19 tests in 4 test runs.
Dependent tests:
test_one.py::test_b depends on test_one.py::test_e
=================================================

在这种情况下,分析了7个测试,在正向和反向运行测试后,在额外运行2次测试后,总共运行了5次测试,找到了一个相关的测试。

一些依赖可能是由环境中的永久性更改引起的(例如,在后续测试运行中没有回滚的数据库更改)。在这种情况下,无法可靠地找到依赖项,这些测试将单独列出。

============================== Results ===============================
Run dependency analysis for 5 tests.
Executed 11 tests in 3 test runs.
Tests failing permanently after all tests have run:
test_one.py::test_b
======================================================================

只有在运行相关测试之前运行有问题的测试时,才能找到由永久性更改引起的依赖项,否则测试将两次都失败。

选项--reversed-first允许您反转前两次测试运行的顺序。

选项--markers-to-ignore允许定义一个以逗号分隔的标记名称列表。具有这些标记的测试将在分析中忽略(例如,根本不运行)。这可以用来排除具有定义测试顺序的标记的测试。例如包括dependency(来自pytest-dependency插件),order(来自pytest-order)或depends(来自pytest-depends)。要忽略所有带有dependency标记的测试,可以使用以下方法:

python -m pytest --find-dependencies --markers-to-ignore=dependency

注意,在这种情况下,您也不会找到其他依赖于有序标记的测试。

注意

  • 在测试中给出的命令行选项会传递到依赖项查找模式下的所有测试运行。

  • 如果找到任何相关测试,pytest运行的退出代码将被设置为1。

  • 如果检测到pytest-xdist,将确保内部测试不被分发,因为这会破坏依赖项检查。

  • 如果没有找到相关测试,测试将运行的时间是未使用此选项时的两倍(因为每个测试将执行两次),有一个相关测试时,将大约是原始测试的三倍,并且每找到一个相关测试,将花费更多时间(例如,更多的重复测试)。

排序插件的用法

如果您使用使用标记更改测试顺序的插件,这些标记将仅在第一次测试运行中应用。后续测试运行的顺序完全由pytest-find-dependencies定义。这意味着如果您使用排序插件如pytest-order,即使不排除这些测试(可能或可能不是所需的),依赖项仍然可以被找到。使用pytest-randomly将随机化第一次测试运行,并且可以与pytest-find-dependencies一起使用,而不会出现问题。

贡献

欢迎贡献。可以使用 tox 运行测试,请在提交拉取请求之前确保覆盖率至少保持不变。

许可证

MIT 许可证的条款下分发,“pytest-find-dependencies” 是免费和开源软件。

问题

如果您遇到任何问题或提出功能请求,请附上详细描述 提交问题

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定要选择哪一个,请了解更多关于 安装包 的信息。

源代码分发

pytest-find-dependencies-0.5.3.tar.gz (13.3 kB 查看哈希)

上传时间 源代码

构建分发

pytest_find_dependencies-0.5.3-py3-none-any.whl (8.4 kB 查看哈希)

上传时间 Python 3

由以下支持