La diferencia entre unittest y pytest en el marco de pruebas unitarias de Python

Prefacio

Hoy quiero hablarles sobre el marco de pruebas unitarias de Python. Todos sabemos que existen muchos marcos de pruebas unitarias de Python. El que usamos habitualmente es unittest porque es relativamente básico y se puede usar para desarrollo secundario. Si su nivel de desarrollo es muy alto Alto, también es posible el desarrollo integrado de plataformas de prueba automatizadas. Este artículo habla principalmente sobre la diferencia entre unittest y pytest: en comparación con unittest, pytest tiene un código simple, un uso conveniente y flexible y complementos enriquecidos. Sin más, vayamos directo al tema.

1. Reglas de redacción de casos de uso

1. Unittest proporciona casos de prueba, conjuntos de pruebas, dispositivos de prueba y clases relacionadas con ejecutores de pruebas para que las pruebas sean más claras, convenientes y controlables. Al escribir casos de uso utilizando unittest, debe cumplir con las siguientes reglas:

  (1) El archivo de prueba primero debe importar unittest
  (2) La clase de prueba debe heredar unittest.TestCase
  (3) El método de prueba debe comenzar con "test_"
  (4) La clase de prueba debe tener el método unittest.main()

2. Pytest es un marco de prueba de terceros para Python, es un marco de extensión basado en unittest y es más simple y eficiente que unittest. Al escribir casos de uso utilizando pytest, debe cumplir con las siguientes reglas:

(1) El nombre del archivo de prueba debe comenzar con "test_" o terminar con "_test" (como: test_ab.py)
(2) El método de prueba debe comenzar con "test_".
(3) El nombre de la clase de prueba comienza con "Prueba".

Resumen: pytest puede ejecutar casos de prueba de estilo unittest sin modificar ningún código del caso unittest y tiene buena compatibilidad. Pytest tiene una gran cantidad de complementos, como el complemento flask, que se puede utilizar para volver a ejecutar casos de uso cuando se producen errores; y el complemento xdist, que se puede utilizar para la ejecución paralela de dispositivos. 

2. Casos previos y posteriores al uso

1.unittest proporciona configuración/desmontaje, que solo se puede utilizar para todos los casos de uso.

2.pytest proporciona configuración/desmontaje a nivel de módulo, nivel de función, nivel de clase y nivel de método, que es más flexible que la configuración/desmontaje de unittest.

El nivel de módulo (setup_module/teardown_module) comienza al principio y al final del módulo. El
nivel de función global (setup_function/teardown_function) solo tiene efecto para casos de uso de funciones (no en la clase).
El nivel de clase (setup_class/teardown_class) solo se ejecuta una vez antes y después de la clase (en la clase)
El nivel del método (setup_method/teardown_method) comienza al principio y al final del método (en la clase) y
(setup/teardown) dentro de la clase se ejecuta antes y después de llamar al método.

3.pytest también puede agregar el decorador @pytest.fixture() antes de la función e instalarlo en la función de fijación en el caso de prueba. El ámbito de uso del dispositivo puede ser función, módulo, clase, sesión.
Firture tiene las siguientes ventajas sobre la instalación y el desmontaje:

El método de nomenclatura es flexible y no se limita a la nomenclatura de configuración y desmontaje
. Se pueden compartir datos en la configuración conftest.py. Algunas configuraciones se pueden encontrar automáticamente sin importar y se pueden llamar mediante varios archivos py.
alcance="módulo" puede realizar múltiples intercambios de archivos cruzados .py con el prefijo alcance
="sesión" para realizar múltiples archivos cruzados .py. Use una sesión para completar múltiples casos de uso.
Use rendimiento para activar la ejecución del desmontaje.

3. Afirmación

1.unittest proporciona afirmarEqual, afirmarIn, afirmarTrue y afirmarFalse.

2.pytest usa la expresión de afirmación directamente.

4. Informe

1.unittest utiliza la biblioteca HTMLTestRunnerNew.

2.pytest tiene complementos pytest-HTML y allure.

5. Volver a ejecutar después del fallo

1. Unittest no tiene esta función.

2. Pytest admite la repetición si falla la ejecución del caso de uso, complemento pytest-rerunfailures.

6. Parametrización

1. Unittest debe depender de la biblioteca ddt.

2. Pytest utiliza directamente el decorador @pytest.mark.parametrize.

7. Ejecución de clasificación de casos de uso.

1. Unittest ejecuta todos los casos de uso de forma predeterminada, y también puede ejecutar algunos casos de uso cargando testsuit.

2. Pytest puede marcar clases y métodos a través de @pytest.mark. Agregar parámetros ("-m") a pytest.main solo puede ejecutar las clases y métodos marcados.

8. Si no te queda bien, puedes mirar la siguiente tabla:

 En términos generales, el formato de caso de uso de prueba unitaria es complejo, no tiene compatibilidad, tiene pocos complementos y es conveniente para el desarrollo secundario. pytest es más conveniente y rápido. El formato del caso de uso es simple. Puede ejecutar casos de prueba de estilo unittest sin modificar ningún código del caso de uso de unittest. Tiene mejor compatibilidad. Hay muchos complementos de pytest, como el complemento flask, que se puede usar para volver a ejecutar casos de uso cuando ocurren errores, y el complemento xdist, que se puede usar para la ejecución paralela de dispositivos y es más eficiente.

Finalmente: Los siguientes son los materiales de aprendizaje de apoyo, que deberían ser el almacén de preparación más completo y completo para los amigos que hacen [pruebas de software]. Este almacén también me ha acompañado en el viaje más difícil. ¡Espero que también pueda ayudarlo a usted!

Subprograma de entrevista de prueba de software

¡Un banco de preguntas de prueba de software que ha sido utilizado por millones de personas! ! ! ¡Quién es quién lo sabe! ! ! El miniprograma de prueba de entrevistas más completo de Internet. Puede usar su teléfono móvil para responder preguntas, tomar el metro, el autobús y enrollarlo.

Cubre las siguientes secciones de preguntas de la entrevista:

1. Teoría básica de pruebas de software, 2. web, aplicaciones, pruebas de función de interfaz, 3. red, 4. base de datos, 5. linux

6. Web, aplicaciones, automatización de interfaces, 7. Pruebas de rendimiento, 8. Conceptos básicos de programación, 9. Preguntas de la entrevista de recursos humanos, 10. Preguntas de prueba abiertas, 11. Pruebas de seguridad, 12. Conceptos básicos de informática

  Cómo obtener el conjunto completo de información: haga clic en la pequeña tarjeta a continuación para obtenerla usted mismo

Supongo que te gusta

Origin blog.csdn.net/weixin_57794111/article/details/132900758
Recomendado
Clasificación