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

3
我有几个使用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 时需要创建环境,这些环境中涉及到一些编译库和解决方法(在 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解释器来运行我的测试。


https://dev59.com/I10a5IYBdhLWcg3wPWlN - phd
谢谢,值得深入研究。欢迎任何非 tox 的解决方案 :) - Alex Tereshenkov
1个回答

2

1
非常感谢,这是一个很棒的工具。这个插件将从哪里读取Python安装路径?从tox.ini文件中吗?还是有其他定义方式?文档https://github.com/pytest-dev/pytest-xdist#running-tests-in-a-python-subprocess似乎没有提到任何关于这个的信息... - Alex Tereshenkov
1
谢谢回复。我该如何指定conda环境的路径?您能详细说明一下“Python2和Python3应该存在于环境中”的含义吗?谢谢! - Alex Tereshenkov
好的,我明白了。那么,当你写python=python3.5时,pytest是如何知道在这个特定的环境中搜索python.exe文件的呢? - Alex Tereshenkov
如果系统路径中存在Python3.5,则它将正常运行。 - SilentGuy
使用此答案创建多个环境 https://dev59.com/I10a5IYBdhLWcg3wPWlN#30555944 - SilentGuy
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接