unittest unit tutorial test mock cov python pytest

python - unit - Pytest ejecutar pruebas paralelas



pytest-cov (2)

Quieres pytest-xdist . Creo que Qxf2 lo explica bastante bien: Qxf2 en Pytest-Xdist

Sin embargo, su línea de comando de Linux es un poco demasiado detallada para mi gusto; Yo suelo:

pytest -n <NUM>

donde <NUM> es el número de trabajadores paralelos.

Quiero ejecutar todas mis pruebas de pytest en paralelo en lugar de secuencialmente.

Mi configuración actual se ve como:

class Test1(OtherClass): @pytest.mark.parametrize("activity_name", ["activity1", "activity2"]) @pytest.mark.flaky(reruns=1) def test_1(self, activity_name, generate_test_id): """ """ test_id = generate_random_test_id() test_name = sys._getframe().f_code.co_name result_triggers = self.proxy(test_name, generate_test_id, test_id, activity_name) expected_items = ["response"] validate_response("triggers", result_triggers, expected_items) @pytest.mark.parametrize("activity_name", ["activity1", "activity2"]) @pytest.mark.flaky(reruns=1) def test_2(self, activity_name, generate_test_id): """ """ #same idea...

pytest -v -s mis pruebas usando pytest -v -s .

El resultado es que mis pruebas se ejecutan de forma secuencial, lo que lleva mucho tiempo ya que algunos de ellos esperan las respuestas de los servidores remotos (pruebas de integración).

¿Hay alguna forma de correr pytest en paralelo?


pytest-xdist es una gran solución para la mayoría de los casos, pero las pruebas de integración son especiales. Después de enviar una solicitud a un servidor remoto, se puede iniciar otra prueba en un nuevo hilo en lugar de esperar una respuesta. Esta es una prueba concurrente en lugar de paralela. La concurrencia permite muchas más pruebas a la vez con menos memoria y sobrecarga de procesamiento.

Escribí el pytest-parallel [py3.6 +] para habilitar las pruebas paralelas y simultáneas. Aquí es cómo ejecutar sus pruebas de integración al mismo tiempo:

pytest --tests-per-worker auto