Ejecución concurrente de Pytest (14)


Ya se trate de casos de prueba de automatización de la interfaz de usuario o casos de prueba de automatización de API, al escribir y usar, debe prestar atención a la independencia de la ejecución de cada caso de prueba, lo que significa que cada caso de prueba escrito es independiente entre sí, por lo que no lo hará. ser causado por La ejecución de A falló y también falló B. Para obtener más información, consulte el artículo sobre especificaciones de escritura de casos de prueba de API. Al escribir muchos casos de prueba, debe considerar su eficiencia de ejecución. En el marco de prueba de Pytest, se proporciona pytest-xdist para ejecutar casos de prueba al mismo tiempo para mejorar la velocidad de ejecución de los casos de prueba. En circunstancias normales, la ejecución de casos de prueba se ejecuta en orden de acuerdo con ciertas reglas. El resultado es que algunos recursos solo pueden ser ocupados por un caso de prueba cada vez que se ejecuta, y no se puede lograr la ejecución del caso de prueba. del uso compartido de recursos, el complemento pytest-xdist puede resolver bien este problema. Por un lado, los recursos se comparten. Según la primera consideración, el segundo punto es mejorar la eficiencia de la ejecución de la prueba.

Este es principalmente un caso específico, el código fuente del código probado es:

#!/usr/bin/python3
#coding:utf-8
import  pytest
import  time as t


def add(a,b):
   try:
      return a+b
   except Exception as e:
      return e.args[0]

@pytest.mark.parametrize('a,b,result',[
      (1,1,2),
      (1.0,1.0,2.0),
      (1, 1.0, 2.0),
      (1,0,1),
      ('','',''),
      ('hi ','wuya','hi wuya'),
      (0, '', "unsupported operand type(s) for +: 'int' and 'str'"),
      (1,'hi',"unsupported operand type(s) for +: 'int' and 'str'"),
       (1.0,'wuya',"unsupported operand type(s) for +: 'float' and 'str'"),
])
def test_add(a,b,result):
   t.sleep(1)
   assert  add(a,b)==result

Ejecución de una orden:

pytest -v test_time.py

Después de la ejecución, la información del resultado de salida muestra que el tiempo de ejecución es de más de 9 segundos, como se muestra en la siguiente figura:

Lo siguiente se ejecuta en combinación con el complemento pytest-xdist. Al ejecutar, especifique un cierto número de procesos del procesador para ejecutar. El código de prueba anterior se puede ejecutar en menos de 9 segundos. El comando de ejecución es:

pytest -v -n 4 test_time.py

Después de la ejecución, la información del resultado de la ejecución es como se muestra en la siguiente figura:

Con base en la información anterior, se puede ver que su velocidad de ejecución es de más de 4 segundos, lo que mejora en gran medida la eficiencia de la ejecución de la prueba.

Por supuesto, al usar el complemento pytest-xdist, debe especificar el número de procesos del procesador en ejecución. También puede usar -n auto para especificar el número de CPU a ejecutar. Los comandos de ejecución específicos son:

pytest -v -n auto test_time.py

Después de la ejecución, su información de resultado es:

En casos reales, generalmente no se recomienda especificar demasiados procesos de procesador. No significa necesariamente que especificar demasiados procesos de procesador sea más eficiente. Es demasiado alto porque también requiere una cierta cantidad de recursos y consumo interno, que conducirá a la ejecución. La eficiencia se reduce, como en el caso de ahora, se especifica como 50, pero el tiempo de ejecución es de más de 9 segundos, ver la siguiente información de resultado:

El complemento pytest-xdist también se puede integrar perfectamente con pytest-html para generar informes de prueba basados ​​en HTML. Por ejemplo, en el caso, se espera que el informe de prueba se genere automáticamente después de la ejecución. Los comandos ejecutados son:

pytest -v -n 4 --html = report.html test_time.py

Después de la ejecución, se generará un informe de prueba de report.html en el directorio actual, como se muestra en la siguiente figura:

Finalmente: beneficios

En la industria de la tecnología, debe mejorar sus habilidades técnicas y enriquecer su experiencia práctica en proyectos de automatización, lo que será muy útil para la planificación de su carrera en los próximos años y la profundidad de su tecnología de pruebas.

En la temporada de entrevistas de Golden 9th y Silver 10th, temporada de cambio de trabajo, organizar preguntas de entrevistas se ha convertido en mi hábito durante muchos años. La siguiente es mi recopilación y clasificación en los últimos años, todo está organizado en torno a [pruebas de software], el contenido principal incluye: video exclusivo de prueba de automatización de Python, detalles de automatización de Python, un conjunto completo de preguntas de la entrevista y otro contenido de conocimiento.

Para los amigos que prueban software, debería ser el almacén de preparación de entrevistas más completo y completo. Para organizar mejor cada módulo, también me refiero a muchas publicaciones de blogs y proyectos de alta calidad en Internet, y me esfuerzo por no perder todos los puntos de conocimiento. Los amigos confiaron en estos contenidos para revisarlos y obtuvieron ofertas de grandes fábricas como BATJ. Este almacén también ha ayudado a muchos estudiantes de pruebas de software, ¡y espero que pueda ayudarlo a usted también!

¡Que tú y yo nos encontremos y encuentres algo! Bienvenido a seguir la cuenta pública de WeChat: [Artículo picante triste] Reciba gratis un libro de entrevistas para ingenieros de pruebas de software de 216 páginas. ¡Y los tutoriales de aprendizaje en video correspondientes son gratuitos para compartir!

Supongo que te gusta

Origin blog.csdn.net/weixin_50829653/article/details/112863788
Recomendado
Clasificación