我想使用 tox 在需要额外设置的项目上运行 py.test 除了将包安装到 virtualenv 之外。创建 virtualenv 并安装依赖项后,需要运行一些命令。
具体来说,我说的是使用 nodeenv 设置一个 node 和 npm 环境:
nodeenv --prebuilt -p
我看到 tox 允许我通过设置 install_command
来提供用于安装依赖项的自定义命令在 tox.ini
中。但我认为这不是我想要的,因为它替换了用于安装依赖项的命令(我假设是 pip
)。
我考虑过使用具有 session 范围的 py.test fixture 来处理 nodeenv 的设置,但这对我来说似乎很老套,因为我不希望在直接运行 py.test 时发生这种情况,不是通过毒素。
实现此目标最简单的方法是什么?
最佳答案
在 commands 中创建 virtualenv 和依赖安装后,您可以进行所有必要的设置。 .是的,它说“测试时调用的命令”。但是如果你需要做额外的工作来准备测试,你可以直接做。
它会按照给定的顺序通过你扔给它的任何东西来工作 - 例如:
[testenv:someenv]
deps =
nodeenv
pytest
flexmock
commands =
nodeenv --prebuilt -p
; ... and whatever else you might need to do
py.test path/to/my/tests
如果您有命令/脚本或任何其他产生正确结果但它返回非零退出状态的东西,您可以通过添加 -
忽略它(如 - naughty-command
)。
如果您需要执行更多步骤,您可以将它们包装在一个小的 (Python) 脚本中,然后按照 https://stackoverflow.com/a/47834447/2626627 中所述调用该脚本。 .
添加使用多个安装命令的能力也存在问题:https://github.com/tox-dev/tox/issues/715已实现。
关于virtualenv - 在 virtualenv 中安装依赖项后运行命令的推荐方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37187753/