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

如何针对多个Python conda环境运行Python测试?,python,testing,pytest,conda,tox,Python,Testing,Pytest,Conda,Tox,我使用Anaconda创建了一些精心配置的conda环境。我编写了一个Python包,它使用了这些环境中安装的一些包和库。现在,我想对每个环境执行的每个测试文件运行测试,以确保包能够处理不同Python版本和不同第三方包集的工作 使用tox对我来说不起作用,因为它试图在本地重新创建这些环境以运行测试。这是我的tox.ini文件的外观: [tox] envlist = py36, py27 skipsdist = True [testenv] basepython = py36: C:

我使用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安装
,这主要是因为涉及到一些编译库和解决方法(在
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
中执行它以查看结果。它确实有效,但我想知道是否还有其他类似python的方法来运行这些测试,比如使用
py.test
tox
。我不想重新创建我已经拥有的
conda
环境;我只想使用在不同位置访问的不同Python解释器来运行测试。

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

用法:

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

谢谢,值得深入研究。也欢迎任何非
tox
解决方案:)谢谢,这是一个非常好的工具。这个插件将在哪里读取Python安装的路径?从tox.ini文件?或者有没有其他方法来定义这些?文档似乎没有说明这方面的任何内容……它不需要tox.ini文件。Python2和Python3应该存在于环境中,并且所有依赖项必须同时安装在Python2和Python3中。在虚拟环境中同时使用python2和python3可能很棘手。我建议您在不使用python虚拟环境的情况下尝试该命令。这些命令似乎为我运行测试。>python2--version>python3--version>pip2安装-r requirements.txt>pip3安装-r requirements.txt>pytest--dist=each--tx popen//python3--tx popen//python2感谢您回来。如何指定conda环境的路径?你能详细说明一下你所说的环境中应该存在的Python2和Python3是什么意思吗?谢谢我对康达没有经验。我使用virtualenv和virtualenvwrapper进行python环境管理。我使用pip进行包管理。康达处理包裹和环境的方式可能不同。好的,我明白了。那么,当您编写
python=python3.5
时,
pytest
如何知道在这个特定环境中从何处搜索
python.exe
文件?