我有我想测试的Python应用程序。 该应用程序正在导入很多包,例如:
import time
import sys
.
.
.
import mypackage
其中 mypackage 是我自己的包。
当我启动应用程序时,一切正常。但是,一旦我尝试运行 tox 来测试它,我就会收到以下错误:
Collecting mypackage
Could not find a version that satisfies the requirement mypackage (from versions: )
No matching distribution found for mypackage
我知道 tox 无法安装 mypackage 依赖项,因为它不在 pip 中。您知道如何在此类应用程序上运行 tox 或如何使用 tox 安装自己的软件包吗?
我的 tox.ini 文件的内容:
[tox]
envlist = py36
[testenv]
deps =
pytest
coverage
time
sys
mypackage
commands =
python setup.py develop
coverage erase
coverage run -m pytest myapp/tests/
coverage report --omit='.tox/*'
最佳答案
我认为如果您使用 pip
而不是 python setup.py
,这应该可以通过多种方式实现:
- 您可以通过在安装要测试的软件包之前或在同一行中执行
pip install/path/to/private/dependency
来手动安装依赖项。这有一个(次要)优点,您还可以使用-e
在可编辑模式下安装依赖项。 - 您可以使用
pip install
的--find-links
选项,如 this question 的答案中所述。 - 这样做的优点是依赖项处理本身是自动完成的,您只需指定自己的安装包并告诉pip
在哪里可以找到其他东西。重要的是,这也可以使用 environment variables 来指定。 ,因此您不必在 git 存储库中的任何位置硬编码本地路径。
注意:我不确定选项 (2) 是否仅适用于 git 存储库或仅适用于正确的文件...我记得与 --find 相关的问题-链接
不久前。
关于python - 在tox+pytest中使用自己的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52500449/