如何针对多个Python conda环境运行Python测试?
我使用Anaconda创建了一些精心配置的如何针对多个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:
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
文件?