如何 运行 Python 针对多个 Python conda 环境进行测试?

How to run Python tests against multiple Python conda environments?

我有一些使用 Anaconda 创建的精心配置的 conda 环境。我已经编写了一个 Python 包,它使用了安装在这些环境中的一些包和库。现在我想 运行 为每个环境执行每个测试文件的测试,以确保包可以处理不同的 Python 版本和不同的 3rd 方包集。

使用 tox 对我不起作用,因为它试图在本地重新创建这些环境以针对 运行 进行测试。这是我的 tox.ini 文件的样子:

[tox]
envlist = py36, py27
skipsdist = True

[testenv]
basepython = 
    py36: C:\Users\user\AppData\Local\Continuum\Anaconda2\envs\Env1\python.exe
    py27: C:\Users\user\AppData\Local\Continuum\Anaconda2\envs\Env2\python.exe

commands = 
    {envpython} -m unittest discover

但是,不可能直接 pip install 进入 tox 在每个 运行 上创建的环境,主要是因为涉及一些已编译的库和解决方法(已解决在 conda 环境中 - 所以我必须按原样使用它们。

我目前有一个包含以下内容的虚拟 .bat 文件:

"C:\Users\user\AppData\Local\Continuum\Anaconda2\envs\Env1\python.exe" -m unittest discover
"C:\Users\user\AppData\Local\Continuum\Anaconda2\envs\Env2\python.exe" -m unittest discover

我在 Windows cmd 中执行以查看结果。它确实有效,但我想知道是否还有更多 Pythonic 方法来 运行 这些测试,例如使用 py.testtox。我不想重新创建我已有的 conda 环境;我只想使用在不同位置访问的不同 Python 解释器来 运行 我的测试。

您可以查看 pytest-xdist plugin。它允许您 运行 跨不同 python 环境进行测试。

用法:

pytest --dist=each --tx popen//python=python3.5 --tx popen//python=python2.7