python - crear - complementos qgis
pytest: cómo habilitar explícitamente un complemento en la línea de comandos (2)
Nunca he necesitado hacer esto, ya que es más fácil deshabilitar los complementos a través de las banderas de línea de comandos. Como solución alternativa, puede especificar un archivo ini diferente usando la opción -c
y tener un archivo ini diferente o incluso usar /dev/null
como lo he hecho a continuación
$ cat pytest.ini
[pytest]
addopts= -p no:django
$ py.test
================================================= test session starts
platform linux -- Python 3.4.3, pytest-3.0.5, py-1.4.32, pluggy-0.4.0
rootdir: /home/me/python, inifile: pytest.ini
plugins: pep8-1.0.6, cov-2.4.0
collected 0 items
============================================ no tests ran in 0.02 seconds
$ py.test -c /dev/null
================================================= test session starts
platform linux -- Python 3.4.3, pytest-3.0.5, py-1.4.32, pluggy-0.4.0
rootdir: /home/me/python, inifile: /dev/null
plugins: django-3.1.2, pep8-1.0.6, cov-2.4.0
collected 0 items
============================================ no tests ran in 0.02 seconds
Si realmente lo necesitas, podrías hacer algo así. py.test -c <(grep -v no:django pytest.ini)
usando un unix namedpipe y use grep
o sed
para eliminar la línea de plugin. Pero aún parece más fácil tener todos los complementos por defecto y deshabilitarlos a través de la línea de comandos.
py.test -c <(grep -v no:django pytest.ini)
================================================= test session starts
platform linux -- Python 3.4.3, pytest-3.0.5, py-1.4.32, pluggy-0.4.0
rootdir: /home/me/python, inifile: /dev/fd/63
plugins: django-3.1.2, pep8-1.0.6, cov-2.4.0
collected 0 items
============================================ no tests ran in 0.03 seconds
Alternativamente, no especificaría addopts= -p no:myplugin
en pytest.ini
y, en cambio, utilizaría la variable de entorno PYTEST_ADDOPTS
cuando quisiera apagarlos. Pero esto es un ligero revés de lo que pediste
Digamos que deshabilité un complemento de pytest en mi archivo pytest.ini
como:
[pytest]
...
addopts=
-p no:myplugin
Ahora me gustaría poder habilitarlo a veces con argumentos de línea de comando, algo como:
pytest -p yes:myplugin
¿Es eso posible? Por favor, si tiene mejores recomendaciones, me gustaría saber eso también.
Para volver a cargar el complemento, use -p pytest_myplugin
. Esto funcionará cuando se -p no:myplugin
después de -p no:myplugin
(ya sea en la línea de comandos o desde los complementos de pytest.ini).
Lo que está sucediendo aquí: cuando especifica -p no:plugin
, pytest anula "pytest_" a "plugin" . Esto se debe a que myplugin
realmente se importa desde pytest_myplugin
. Desafortunadamente, esta comodidad no se refleja en el lado de carga, que requiere el nombre completo del módulo del complemento.