如何在多个Python conda环境中运行Python测试?

时间:2018-10-10 22:20:55

标签: python testing pytest conda tox

我有一些使用Anaconda创建的经过精心配置的conda环境。我编写了一个Python软件包,其中使用了这些环境中安装的某些软件包和库。现在,我想在每种环境下执行每个测试文件的情况下运行测试,以确保该程序包可以处理不同的Python版本和可用的不同的第三方程序集。

使用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处理,这主要是因为其中涉及一些已编译的库和解决方法(在{{1}中解决了这些问题) }环境-因此我必须照原样使用。)

我目前有一个虚拟的conda文件,内容如下:

.bat
我在Windows "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 中执行以查看结果的

。它确实可以工作,但是我想知道是否还有其他Python方式可以运行这些测试,例如使用cmdpy.test。我不想重新创建已经拥有的tox环境;我只想使用在不同位置访问的不同Python解释器来运行测试。

1 个答案:

答案 0 :(得分:1)

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

用法:

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