gpt4 book ai didi

python - tox 下的测试不一定使用已安装的代码

转载 作者:太空狗 更新时间:2023-10-30 00:17:26 25 4
gpt4 key购买 nike

tox website 上列出的第一个功能是“使用不同的 Python 版本和解释器检查你的包是否正确安装”。这让我觉得如果我搞砸了我的 setup.py,测试将不会通过,并且我会被提醒我的 setup.py 已经变坏了。

事实并非如此。事实上,如果您按照通常的模式将您的模块或包放在与您的 tox.ini 相同的目录中,那么代码是从本地目录(又名 {toxinidir})导入的。这意味着你可以让你的 setup.py 什么都不做,tox 会告诉你它很好。在这一点上,很容易在你推送到 pypi 并尝试使用它之后才注意到这个问题。这是我希望避免出现的问题。

主要问题是空字符串在测试期间出现在 sys.path 上。 Python 将其解释为当前工作目录并从那里导入。

有什么方法可以配置 tox,使本地目录在测试期间不被使用?

目前我的解决方法是 cd {envtmpdir} && coverage run && mv .coverage {toxinidir},但这显然是一个丑陋的 hack。

这里我提供两个版本的代码:

我的目标是找到一个 tox 配置,避免上述问题,并且足够合理,推荐在所有项目中使用。

最佳答案

我注意到 nosetests 在其运行期间修改了 sys.path:它在一开始就将 check out 的代码添加到其中。这实质上打破了毒素试图创造的分离。要解决此问题,您只需将 -P 标志附加到 nosetests:

[tox]
envlist = py27

[testenv]
commands=
nosetests -P tests
deps=
nose
-rrequirements.txt

此外,我必须附加 tests(将 nose 指向 tests/ 目录)以防止 nose importing 任何非- 测试代码(我使用的 C 扩展可能会或可能不会在结帐时构建)。

关于python - tox 下的测试不一定使用已安装的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23186845/

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