es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo configurar la cobertura con tox?

Estoy usando tox para ejecutar pruebas en diferentes entornos usando tox -p (ejecutar en paralelo), pero tengo un problema con la generación de informes de cobertura para todas las pruebas.

tox.ini:

[tox]
envlist = env1,ev2,report
skipsdist=True

[base]
deps = pytest

[testenv:env1]
deps = custom-package-1
{[base]deps}
commands = pytest –cov-append tests/flows/test_1.py

[testenv:env2]
deps = custom-package-2
{[base]deps}
commands = pytest –cov-append tests/flows/test_2.py

[testenv:report]
deps = coverage[toml]
commands = coverage report
depends = env1,env2
parallel_show_output = true

pyproject.toml sección de cobertura:

[tool.coverage.report]
fail_under = 100
show_missing = true
exclude_lines = [
‘pragma: no cover’,
‘….’,
‘if TYPE_CHECKING:’,
“if name == ‘main‘:”,
]

Error:

No hay código fuente para: ‘/Users/my_user/projects/my_proect/flows/init.py’.

¿Alguien puede decirme qué está mal con la configuración proporcionada?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el informe de cobertura no puede encontrar la fuente del código en el archivo “/Users/my_user/projects/my_project/flows/init.py”.

    Es posible que este archivo no esté incluido en la lista de archivos que se están probando en test_1.py o test_2.py, por lo que no hay información de cobertura para él.

    Para solucionar este problema, puedes intentar agregar el archivo a la lista de archivos fuente que se incluirán en el informe de cobertura. Puedes hacer esto agregando la siguiente línea al archivo pyproject.toml:

    [tool.coverage.run]
    source = "my_project/"
    

    Aquí, “my_project/” debe ser reemplazado por el directorio o paquete que contiene los archivos que se están probando, incluyendo el archivo init.py.

    Alternativamente, puedes intentar excluir el archivo del informe de cobertura agregando la siguiente línea al archivo pyproject.toml:

    [tool.coverage.run]
    omit = "my_project/flows/__init__.py"
    

    Aquí, “my_project/flows/init.py” debe ser reemplazado por la ruta al archivo que está causando el error.

Comments are closed.