tox 测试,使用 setup.py extra_require 作为 tox deps 来源
tox tests, use setup.py extra_require as tox deps source
我想使用 setup.py 作为安装包的权限进行测试,使用 extra_requires 完成,如下所示:
setup(
# ...
extras_require={
'test': ['pytest', ],
},
)
Tox 似乎只能 installing from a requirements.txt file which just implies a step of snapshotting requirements before testing (which I'm ignorant how to do automatically) or by duplicating the test dependencies into the tox file, which is all I want to avoid. One mailing list post 建议 tox.ini 应该是测试依赖项的权威,但我不希望将 tox 完全套入项目中。
我想出了一个似乎有效的讨厌的 hack
# tox.ini
...
[testenv]
...
install_command = pip install {opts} {packages} {env:PWD}[test]
默认的 install_command
是 pip install {opts} {packages}
,不幸的是 {packages}
是必需的参数。此外,tox 不会将项目目录公开为魔术变量;但它确实暴露了 shell 的 env
那 运行 它。
假设您 运行 tox
来自与您的 setup.py
和 tox.ini
相同的目录,并假设您的 shell 公开 [=18] =] 作为您当前的路径。 Tox 似乎使用 shlex
之类的东西将您的 install_command
拆分为一组 shell 安全的参数,因此我们不能做 {packages}[test]
之类的事情。最终这个 hack 将命名你的包两次,但我认为这没关系,因为 {env:PWD}[test]
命名你的包加上你想要的 extra_require
块。
我不知道更好的方法,PYPA SampleProject 似乎满足于在 setup.py 和 tox.ini 中指定测试依赖项。
您现在有 "extras" 选项:
# tox.ini
...
[testenv]
...
extras = test
来源:https://tox.readthedocs.io/en/latest/config.html#conf-extras
有时“extras”选项无法解决问题(例如,当您的 extras 依赖项需要来自 deps
部分的依赖项时;例如,当您使用 pytest-django
和您的 extras 依赖项不会安装 Django 本身)。
在这种情况下,您可以像这样在 deps
部分简单地安装您的附加功能:
# tox.ini
[testenv]
deps = .[test]
句点.
表示当前项目(当前路径),跟往常一样,后面是括号中的extras。这就像 pip install .[test]
一样工作。
我想使用 setup.py 作为安装包的权限进行测试,使用 extra_requires 完成,如下所示:
setup(
# ...
extras_require={
'test': ['pytest', ],
},
)
Tox 似乎只能 installing from a requirements.txt file which just implies a step of snapshotting requirements before testing (which I'm ignorant how to do automatically) or by duplicating the test dependencies into the tox file, which is all I want to avoid. One mailing list post 建议 tox.ini 应该是测试依赖项的权威,但我不希望将 tox 完全套入项目中。
我想出了一个似乎有效的讨厌的 hack
# tox.ini
...
[testenv]
...
install_command = pip install {opts} {packages} {env:PWD}[test]
默认的 install_command
是 pip install {opts} {packages}
,不幸的是 {packages}
是必需的参数。此外,tox 不会将项目目录公开为魔术变量;但它确实暴露了 shell 的 env
那 运行 它。
假设您 运行 tox
来自与您的 setup.py
和 tox.ini
相同的目录,并假设您的 shell 公开 [=18] =] 作为您当前的路径。 Tox 似乎使用 shlex
之类的东西将您的 install_command
拆分为一组 shell 安全的参数,因此我们不能做 {packages}[test]
之类的事情。最终这个 hack 将命名你的包两次,但我认为这没关系,因为 {env:PWD}[test]
命名你的包加上你想要的 extra_require
块。
我不知道更好的方法,PYPA SampleProject 似乎满足于在 setup.py 和 tox.ini 中指定测试依赖项。
您现在有 "extras" 选项:
# tox.ini
...
[testenv]
...
extras = test
来源:https://tox.readthedocs.io/en/latest/config.html#conf-extras
有时“extras”选项无法解决问题(例如,当您的 extras 依赖项需要来自 deps
部分的依赖项时;例如,当您使用 pytest-django
和您的 extras 依赖项不会安装 Django 本身)。
在这种情况下,您可以像这样在 deps
部分简单地安装您的附加功能:
# tox.ini
[testenv]
deps = .[test]
句点.
表示当前项目(当前路径),跟往常一样,后面是括号中的extras。这就像 pip install .[test]
一样工作。