Antes de configurar Test Impact Analysis, configura Test Optimization (optimización de tests) para Python. Si vas a informar de los datos a través del Agent, utiliza la versión 6.40 y versiones posteriores o 7.40 y versiones posteriores.
Activate Test Impact Analysis for the test service
You, or a user in your organization with the Intelligent Test Runner Activation (intelligent_test_runner_activation_write) permission, must activate Test Impact Analysis on the Test Service Settings page.
Puedes anular el comportamiento de Test Impact Analysis y evitar que se omitan tests específicos. Estos tests se denominan tests no omitibles.
¿Por qué no se pueden omitir los tests?
Test Impact Analysis utiliza datos de cobertura del código para determinar si deben omitirse tests o no. En algunos casos, estos datos pueden no ser suficientes para tomar esta determinación.
Algunos ejemplos son:
Tests que leen datos de archivos de texto
Tests que interactúan con APIs ajenas al código que se está probando (como las API REST remotas).
Designar los tests como no omitibles garantiza que Test Impact Analysis los ejecute independientemente de los datos de cobertura.
Compatibilidad
En las siguientes versiones se admiten los tests no omitibles:
pytest
De ddtrace>=1.19.0.
Marcar tests como no omitibles
Puedes utilizar la marca skipif de pytest para evitar que Test Impact Analysis omita tests o módulos individuales. Especifica la condition como False y la reason como "datadog_itr_unskippable".
Tests individuales
Los tests individuales pueden marcarse como no omitibles utilizando el decorador @pytest.mark.skipif de la siguiente manera:
Nota: Esto no anula ninguna otra marca skip, o skipif que tenga una condition que evalúe en True.
Compatibilidad
En las siguientes versiones se admiten los tests no omitibles:
unittest
De ddtrace>=2.2.0.
Marcar tests como no omitibles en unittest
Puedes utilizar la marca skipif de unittest para evitar que Test Impact Analysis omita tests individuales. Especifica la condition como False y la reason como "datadog_itr_unskippable".
Tests individuales
Los tests individuales pueden marcarse como no omitibles utilizando el decorador @unittest.skipif de la siguiente manera:
El uso de @unittest.skipif no anula ninguna otra marca skip, ni las marcas skipIf que tengan una condition que evalúe en True.
Limitaciones conocidas
Recopilación de cobertura de código
Interacción con las herramientas de cobertura
Los datos de cobertura pueden aparecer incompletos cuando Test Impact Analysis está activado. Las líneas de código que normalmente estarían cubiertas por los tests no lo están cuando estos tests se omiten.
Interacción con el paquete de cobertura
Test Impact Analysis utiliza la API del paquete coverage para recopilar la cobertura del código. Los datos de coverage run o de complementos como pytest-cov están incompletos debido a que ddtrace utiliza la clase Coverage.
Algunas condiciones race pueden provocar excepciones al utilizar complementos de pytest como pytest-xdist que cambian el orden de ejecución de los tests o introducen paralelización.