我有这样的文件结构:./ project_name/ __init__.py setup.py tests/ .travis.yml所以我在我的 .travis.yml 中运行 py.test。根据我安装包的方式,它要么工作,要么遇到错误。如果我用 安装包pip install -e .,一切都很好,但这有一个缺点,即不是一个现实的安装场景。如果我使用 安装包pip install .,它会像在非开发模式下的另一台机器上一样安装。但是,出现了一个问题:当我运行 pytest 时,我的测试使用import project_name. 然后,python 从目录本地导入,而不是使用已安装的包,并导致ImportMismatchError.处理这个问题的最佳方法是什么?
2 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
一种解决方案可能是制作一个tox.ini在顶层调用的文件以与 tox 一起使用。这是一个负责构建环境的工具 - 它就像make但更特定于 python 的东西。如果你做一个tox.ini:
[tox]
envlist = py
[testenv]
commands = pytest tests
deps =
pytest
然后安装tox使用pip3 install tox,那么就命令tox在命令行中,它会在安装包,运行在一个独立的虚拟环境测试的照顾。
然后,您可以在您的travis.yml:
language: python
python:
- 3.6
install:
- pip install tox
script:
- tox
Travis 将用于tox以更具可重复性的方式运行测试。
添加回答
举报
0/150
提交
取消