virtualenv - 在 virtualenv 中安装依赖项后运行命令的推荐方式

标签 virtualenv tox

我想使用 tox 在需要额外设置的项目上运行 py.test 除了将包安装到 virtualenv 之外。创建 virtualenv 并安装依赖项后,需要运行一些命令。

具体来说,我说的是使用 nodeenv 设置一个 nodenpm 环境:

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/

相关文章:

python - 如何将覆盖率结果与 tox 结合起来?

python - Travis 上出现奇怪的构建错误,tox 工作中的本地测试

django - staticfiles 和 STATIC_URL 与 virrtualenv - django

python - 使用 virtualenvwrapper 重命名环境

python - 使用 `chmod` 安装包后运行 `setup.py`

python - 使用 VirtualEnv 集中安装 Django

python - 如何使用命令行参数更改 Tox 命令

setuptools - 是否有理由在 python 项目中同时拥有 tox.ini 和 setup.cfg?

python - pip 在 pyenv 中使用时不应答

python - 我如何回归/特征测试 python 包中是否包含非 python 文件?