使用依赖解析将py.test作为distutils命令调用
项目描述
设置脚本可以使用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.ini 或 tox.ini 的 [pytest] 部分,或在 setup.cfg 的 [tool:pytest] 部分设置 py.test 运行的永久选项(如 addopts 或 pep8ignore)。请参阅 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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 70d4739585a7008f37bf4933c013fdb327b8878a5a69fcbb3316c88882f0f49b |
|
MD5 | bd11f67561d7c4db8cf7e96b13ab469f |
|
BLAKE2b-256 | d77d60976d532519c3a0b41e06a59ad60949e2be1af937cf02738fec91bfd808 |
pytest-runner-6.0.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ea326ed6f6613992746062362efab70212089a4209c08d67177b3df1c52cd9f2 |
|
MD5 | 75dcfa79cc47ecce1a3943f96aafd643 |
|
BLAKE2b-256 | 232b73982c02d28538b6a1182c0a2faf764ca6a76a6dbe89a69288184051a67b |