[英]tests under tox don't necessarily use the installed code
tox网站上列出的第一个功能是“使用不同的Python版本和解释器正确检查您的软件包安装”。 这让我想到,如果我搞砸了我的setup.py,测试将无法通过,我将被提醒我的setup.py已经坏了。
事实并非如此。 事实上,如果您遵循将模块或包放在与tox.ini相同的目录中的常规模式,则代码将从本地目录(aka {toxinidir})导入。 这意味着你可以让你的setup.py绝对没有任何东西,tox会告诉你它的罚款。 那时,在你推到pypi并尝试使用之前,很容易就不会注意到这个问题。 这是我想要防止的问题。
主要问题是在测试期间空字符串出现在sys.path上。 Python将此解释为当前工作目录并从那里导入。
有没有办法配置tox,以便在测试期间不使用本地目录?
目前我的解决方法是cd {envtmpdir} && coverage run && mv .coverage {toxinidir}
,但这显然是一个丑陋的黑客。
在这里,我提供了两个版本的代码:
我的目标是找到一个避免上述问题的tox配置,并且足够合理,建议在所有项目中使用。
我注意到nosetests
在运行期间修改了sys.path
:它在一开始就将检出的代码添加到它。 这基本上打破了tox试图创造的分离。 要解决此问题,您只需将-P
标志附加到nosetests
:
[tox]
envlist = py27
[testenv]
commands=
nosetests -P tests
deps=
nose
-rrequirements.txt
此外,我不得不附加tests
(指向tests/
目录的鼻子)以防止鼻子import
任何非测试代码(我使用的C扩展可能会或可能不会在结帐中构建)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.