gpt4 book ai didi

python - 如何使用 tox 和 pytest 将单元测试限制在支持的平台上?

转载 作者:行者123 更新时间:2023-12-04 16:45:40 28 4
gpt4 key购买 nike

我有一个小的python包tendo我想让它在各种 python 版本上运行、测试和安装,从 2.5 开始到 3.2

我需要 2.5 支持,因为我们仍然有机器在运行它并且还不能升级。

目前,单元测试包含在模块中,这使得在更改模块时更新它们以及运行它们变得更加容易,因为 将运行测试。

某些模块并非在所有平台上都可用。

setup.py
setup.cfg
tox.ini
mypackage/foo.py
mypackage/bar.py

Tox 配置为运行 py.test在所有平台上,仍然是 [pytest]部分来自 setup.cfg配置为在所有 *.py 中查找测试文件。

这带来了一个问题:其中一些文件不应该在 py25 上运行。并且不可能为此调整它们。

我正在寻找一种配置,它可以让我指定为某些平台加载(或更好地排除)哪些模块。

所需的行为是能够在所有支持的 python 版本上安装这个包。 (显然应该跳过几个模块)。

最佳答案

您可以使用 conftest.py 文件来自定义测试集合。例如,您可以像这样跳过所有版本上的 setup.py 和 python3 上的特定模块:

# content of conftest.py
import sys

collect_ignore = ["setup.py"]
if sys.version_info[0] > 2:
collect_ignore.append("pkg/module_py2.py")

如果你把这个 conftest.py 文件放在你的 setup.py 文件旁边并且有一个像这样的模块文件:
# content of pkg/module_py2.py
def test_only_on_python2():
try:
assert 0
except Exception, e:
pass

然后你看到 py.test --collectonly在 Python2 下是这样的:
$ py.test --collectonly
=========================== test session starts ============================
platform linux2 -- Python 2.7.3 -- pytest-2.2.5.dev1
collecting ... collected 1 items
<Module 'pkg/module_py2.py'>
<Function 'test_only_on_python2'>

============================= in 0.01 seconds =============================

根据 conftest.py 定义,可以看到模块,而
在python3下既不是 module_py2.py也不是 setup.py文件将被收集。

关于python - 如何使用 tox 和 pytest 将单元测试限制在支持的平台上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10816224/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com