我用setuptools
做了我的项目,我想用tox
测试它。我在一个变量中列出了依赖项,并添加到setup()
参数(tests_require
和extras_require
)。我的项目需要安装tests_require
中列出的所有依赖项进行测试,但pip install
没有安装它们。
我试过这个,但它不起作用:
install_command = pip install {opts} {packages}[tests]
如何安装测试依赖项而不必管理多个依赖项列表(即e.在test_requirements.txt
和tests_require
变量中列出所有依赖项)?
4条答案
按热度按时间0dxa2lsx1#
我是通过稍微滥用一些额外的要求来达到这个目的的。您几乎可以尝试extras语法,只是
tests_require
dep不能以这种方式自动可用。setup.py
是这样的:然后,您可以使用extras语法(e.例如,从项目根目录:
在
tox.ini
中对Tox给予相同的语法,无需调整默认的install_command
:现在你不需要在两个地方维护依赖项列表,它们在发布包的位置表示:而不是
requirements.txt
文件。看来这个小额外的黑客is not all that uncommon .
zzwlnbp82#
解决方案
Tox 2.6引入了
extras
选项。这将从它刚刚构建的sdist安装extras
,只针对该sdist并且在它正在进行正常的sdist安装时。www.example. com 应该看起来像:
tox.ini看起来应该是:
关注点
其他方法可能会得到类似的结果,但会引入不必要的风险并限制其他功能的有用性:
deps =.[tests]
是一个有点黑客。该字段用于环境需要的包。Ifwww.example. www.example.com 。如图所示,它将从您的工作目录安装整个软件包(无论处于何种状态!)只是为了获得tests
中的包列表。接下来将运行install_command
,安装新创建的sdist。简而言之,sdist的问题可能会被掩盖,因为您已经从工作副本安装了它。编辑
install_command
是矫枉过正。它将覆盖通过deps
安装的项目。(同样,也许你用它来安装一个特定版本的软件包)。运行
python setup.py test
时使用tests_require
。Tox建议避免使用python setup.py test
,这样你就可以忽略tests_require
。lbsnaicq3#
你可以做的是创建一个文件(称为
test_requirements.txt
)并列出测试依赖项,如下所示:然后,在
setup.py
中,解析并将文件内容存储在列表中,并将该列表传递给setup
:i34xakig4#
如果使用以下命令,Tox将在运行测试之前安装
test_requires
:你还需要add to setup.py在哪里测试:
最后,here用一个很好的例子回答了一个类似的问题。