跳转到主要内容

使用依赖解析将py.test作为distutils命令调用

项目描述

https://img.shields.io/pypi/v/pytest-runner.svg https://img.shields.io/pypi/pyversions/pytest-runner.svg tests Code style: Black https://img.shields.io/badge/skeleton-2022-informational https://tidelift.com/badges/package/pypi/pytest-runner

设置脚本可以使用pytest-runner为pytest runner添加setup.py测试支持。

弃用通知

pytest-runner依赖于setuptools已弃用的功能,并依赖于会破坏pip安全机制的功能。例如,“setup_requires”和“tests_require”绕过 pip --require-hashes。另请参阅 pypa/setuptools#1684

建议您

  • 从您的 setup_requires 中删除 'pytest-runner',最好删除 setup_requires 选项。

  • tests_require 中删除 'pytest' 和任何其他测试需求,最好删除 tests_requires 选项。

  • 选择一个工具进行引导,然后运行测试,例如tox。

用法

  • 将“pytest-runner”添加到您的“setup_requires”。将其固定为“>=2.0,<3dev”(或类似)以避免引入不兼容的版本。

  • 将“pytest”和任何其他测试需求包括到“tests_require”中。

  • 使用 setup.py pytest 调用测试。

  • 通过传递 --index-url 从备用索引URL下载测试需求(如果已指定为setup.cfg中的easy_install,则不必要)。

  • 使用 --addopts 传递额外的py.test命令行选项。

  • setup.cfg[pytest] 部分(如 index-url)中设置 python setup.py pytest 命令的永久选项。

  • pytest.initox.ini[pytest] 部分,或在 setup.cfg[tool:pytest] 部分设置 py.test 运行的永久选项(如 addoptspep8ignore)。请参阅 pytest issue 567

  • 可选地,在 setup.cfg[aliases] 部分设置 test=pytest,使 python setup.py test 调用 pytest。

示例

最简单的使用方法在 setup.py 中如下所示

setup(
    setup_requires=[
        'pytest-runner',
    ],
    tests_require=[
        'pytest',
    ],
)

需要运行测试的额外依赖(例如 mock 或 pytest 插件)可以添加到 tests_require,并在调用 pytest 之前下载和安装。

在 github 上搜索 此搜索 以获取实际使用的示例。

独立示例

此技术已过时 - 如果你有希望使用依赖项调用的独立脚本,请使用 pip-run

尽管 pytest-runner 通常用于向维护的包添加 pytest 测试运行器支持,但 pytest-runner 也可以用于创建独立测试。考虑 此示例失败,在 jsonpickle #117此 MongoDB 测试 中报告,展示了即使在测试需要依赖项的情况下也有效的方法。

任一示例文件都可以克隆或下载,并在任何具有 Python 和 Setuptools 的系统上运行。它将下载指定的依赖项并运行测试。之后,可以删除克隆的目录及其调用测试的所有痕迹。不需要其他依赖项,也不会更改系统配置。

然后,任何尝试复制失败的人都可以轻松地做到这一点,并利用 pytest 的所有功能(重写的断言、丰富的比较、交互式调试、通过插件进行扩展等)。

因此,描述和复制失败之间的沟通障碍几乎被降低到最低。

注意事项

条件需求

由于它使用 Setuptools setup_requires,pytest-runner 将在每次调用 setup.py 时安装自己。在某些情况下,这会导致 setup.py 调用的延迟,而这些调用永远不会调用 pytest-runner。为了避免这种意外情况,请考虑仅在调用 pytest 时才要求 pytest-runner

needs_pytest = {'pytest', 'test', 'ptr'}.intersection(sys.argv)
pytest_runner = ['pytest-runner'] if needs_pytest else []

# ...

setup(
    #...
    setup_requires=[
        #... (other setup requirements)
    ] + pytest_runner,
)

企业版

作为 Tidelift 订阅的一部分提供。

该项目以及数千个其他包的维护者正在与 Tidelift 合作,提供一项企业订阅,涵盖您使用的所有开源软件。

了解更多信息.

安全联系人

要报告安全漏洞,请使用 Tidelift 安全联系人。Tidelift 将协调修复和披露。

项目详细信息


下载文件

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

源分发

pytest-runner-6.0.1.tar.gz (16.1 kB 查看哈希值)

上传时间

构建分发

pytest_runner-6.0.1-py3-none-any.whl (7.2 kB 查看哈希值)

上传时间 Python 3

支持