¿Cómo hacer que Tox pruebe entornos de prueba "con nombre" con diferentes versiones de Python?

2

por ejemplo, digamos que tengo seguidores en tox.ini

[tox]
envlist = py27, py35, testenv2

[testenv]  
 # settings related to "default" testenv - includes deps, commands

[testenv:testenv2]  
 # settings related to testenv2 - includes deps, commands

Ahora, cuando ejecuto el comando tox, invoca testenvcomandos con el intérprete de Python 2.7 y 3.5, pero testenv2solo comandos con Python base instalado en la máquina (en mi caso 2.7). ¿Cómo hacer que tox también pruebe un entorno de prueba "con nombre" (no predeterminado) como testenv2para ser probado con múltiples versiones de Python?

2

La primera respuesta describe dos formas viables. Para completar: también puede generar entornos y usar configuraciones condicionales, por ejemplo:

[tox]
skipsdist = True
envlist = py{27,35}-{test,lint}
[testenv]
skip_install = True
deps =
    test: pytest
    test: pytest-xprocess
    lint: flake8
    lint: black
commands =
    test: pytest -v
    lint: flake8
    lint: black .

generaría ( tox -a):

py27-test
py27-lint
py35-test
py35-lint

Puede usar cualquier factor (por ejemplo, py27 o prueba) para agregar condicionalmente comandos, deps, etc.

Consulte también los documentos .

Por cierto: para ver qué configuraciones tiene exactamente cada testenv, puede ejecutar tox --showconfig.

0

Enumere todos los entornos explícitamente:

[tox]
envlist = py27, py35, py27-testenv2, py35-testenv2

Si eso no es suficiente refactorización tox.ini:

[testenv]  
 # settings related to "default" testenv - includes deps, commands

[testenv2]  
 # settings related to testenv2 - includes deps, commands

[testenv:py27-testenv2]  
deps = {[testenv2]deps}
commands = {[testenv2]commands}

[testenv:py35-testenv2]  
deps = {[testenv2]deps}
commands = {[testenv2]commands}
1
  • 1
    La primera forma no funciona. No probé la segunda forma, pero encontré otra similar a la tuya. Publicaré una respuesta pronto 9 de agosto de 2018 a las 5:35
0

Podría hacer que el entorno de prueba "nombrado" se pruebe con múltiples versiones de Python haciendo múltiples entornos de prueba "nombrados", uno para cada una de las diferentes versiones de Python con las que quería que se probara y usando la basepythonopción para especificar la versión de Python para el entorno de prueba con el que se realizará la prueba. A continuación se muestra el ejemplo que funciona:

[tox]
envlist = py27, py35, testenv2_py27, testenv2_py35

[testenv]  
 # settings related to "default" testenv - includes deps, commands

[testenv:testenv2_py27]
basepython = python2.7 
 # settings related to testenv2 - includes deps, commands

[testenv:testenv2_py35]
basepython = python3.5  
 # settings related to testenv2 - includes deps, commands