tox 网站上列出的第一个功能是“使用不同的 Python 版本和解释器检查你的包是否正确安装”。这让我觉得如果我搞砸了我的 setup.py,测试将不会通过,我会收到我的 setup.py 变坏的警报。
事实并非如此。事实上,如果您按照通常的模式将模块或包放在与 tox.ini 相同的目录中,则代码是从本地目录(又名 {toxinidir})导入的。这意味着你可以让你的 setup.py 绝对不做任何事情,并且 tox 会告诉你它很好。那时,很容易直到你推送到 pypi 并尝试使用它之后才注意到问题。这是我想防止的问题。
主要问题是空字符串在测试期间出现在 sys.path 上。Python 将其解释为当前工作目录并从那里导入。
有没有办法配置 tox 以便在测试期间不使用本地目录?
目前我的解决方法是 to cd {envtmpdir} && coverage run && mv .coverage {toxinidir}
,但这显然是一个丑陋的黑客。
在这里,我提供了我们代码的两个版本:
我的目标是找到一个避免上述问题的 tox 配置,并且足够合理以推荐在所有项目中使用。