tox测试,使用setup.py extra_require作为tox deps源

时间:2016-10-07 17:10:31

标签: python testing setup.py tox

我想使用setup.py作为要安装以进行测试的软件包的权限,使用extra_requires完成,如下所示:

setup(
    # ...
    extras_require={
        'test': ['pytest', ],
    },
)

Tox似乎只能提供installing from a requirements.txt文件,这只是意味着在测试之前快照需求的步骤(我不知道如何自动执行)或duplicating the test dependencies进入tox文件这就是我想要避免的。 One mailing list post建议tox.ini应该是测试依赖项的权威,但我不希望将tox完全插入到项目中。

2 个答案:

答案 0 :(得分:11)

您现在拥有“额外”选项:

{{input placeholder=placeholder value=cardNumber key-press=action}}

来源:https://tox.readthedocs.io/en/latest/config.html#conf-extras

答案 1 :(得分:0)

我想出了一个似乎有用的讨厌的黑客

# tox.ini
...
[testenv]
...
install_command = pip install {opts} {packages} {env:PWD}[test]

defualt install_commandpip install {opts} {packages},遗憾的是{packages}是必需参数。此外,tox不会将项目目录公开为魔术变量;但它确实暴露了运行它的shell的env

这可以假设您从与toxsetup.py相同的目录中运行tox.ini,并假设您的shell公开PWD作为当前路径。 Tox似乎使用shlex之类的东西将install_command拆分为一组shell安全的参数,因此我们无法执行{packages}[test]之类的操作。最终,这个黑客会给你的包命名两次,但我认为这是好的,因为{env:PWD}[test]命名你的包加上你想要的extra_require块。

我不知道更好的方法,PYPA SampleProject似乎满足于在setup.py和tox.ini中指定测试依赖项。