¿Qué es la prueba unitaria?
Las pruebas unitarias en Python se realizan para identificar errores al principio de la etapa de desarrollo de la aplicación cuando los errores son menos recurrentes y menos costosos de corregir.
Una prueba unitaria es una prueba a nivel de código con script diseñada en Python para verificar una pequeña "unidad" de funcionalidad. La prueba unitaria es un marco orientado a objetos basado en dispositivos de prueba.
Técnicas de prueba unitaria de Python
Las pruebas unitarias de Python implican principalmente probar un módulo en particular sin acceder a ningún código dependiente. Los desarrolladores pueden usar técnicas como stubs y simulacros para separar el código en "unidades" y ejecutar pruebas a nivel de unidad en las piezas individuales.
- TDD de desarrollo basado en pruebas : las pruebas unitarias deben realizarse junto con Python y, para ello, los desarrolladores utilizan el método de desarrollo basado en pruebas. En el método TDD, primero diseñas las pruebas unitarias de Python y solo entonces continúas escribiendo el código que implementará esta característica.
- Stubs y Mocks: son dos técnicas principales que simulan métodos falsos que se están probando. Un Stub se usa para completar alguna dependencia requerida para que la prueba unitaria se ejecute correctamente. Un Mock, por otro lado, es un objeto falso que ejecuta las pruebas donde ponemos assert.
Las intenciones de ambos métodos son las mismas para eliminar la prueba de todas las dependencias de una clase o función.
Marco de pruebas unitarias de Python
Para facilitar el proceso de pruebas unitarias y mejorar la calidad de su proyecto, se recomienda el marco de pruebas unitarias de Python. El marco de pruebas unitarias incluye
- PyUnit: PyUnit admite accesorios, casos de prueba, conjuntos de pruebas y un ejecutor de pruebas para la prueba automatizada del código. En PyUnit, puede organizar casos de prueba en suites con los mismos accesorios
- Nose: Los complementos integrados de Nose lo ayudan con la captura de salida, la cobertura de código, pruebas de documentación, etc. La sintaxis de Nose es bastante más simple y reduce las barreras para escribir pruebas. Extiende la prueba unitaria de Python para facilitar las pruebas.
- Doctest: el script de prueba Doctest va en una cadena de documentos con una pequeña función en la parte inferior del archivo. Doctest le permite probar su código ejecutando ejemplos incluidos en la documentación y verificando que devolvieron los resultados esperados. El caso de uso de doctest es menos detallado y no detecta casos especiales. Son útiles como documentación expresiva del caso de uso principal de un módulo y sus componentes.
Prueba unitaria con PyUnit
Pyunit es un puerto Python de JUnit. Como parte de Pyunit, en el módulo unittest hay cinco clases clave.
- Clase TestCase : la clase TestCase soporta las rutinas de prueba y ofrece ganchos para realizar cada rutina y limpiar a partir de entonces
- Clase TestSuite : funciona como un contenedor de colección y puede poseer varios objetos de casos de prueba y varios objetos de conjuntos de pruebas.
- Clase TestLoader : esta clase carga casos de prueba y conjuntos definidos localmente o desde un archivo externo. Emite un conjunto de pruebas de objetos que posee esos conjuntos y estuches.
- Clase TextTestRunner : para ejecutar las pruebas, cuenta con una plataforma estándar para ejecutar las pruebas
- La clase TestResults : ofrece un contenedor estándar para los resultados de la prueba.
Diseñar un caso de prueba para Python Testing usando PyUnit
Una prueba unitaria proporciona una clase base, caso de prueba, que se puede utilizar para crear nuevos casos de prueba. Para diseñar el caso de prueba, se utilizan tres conjuntos de métodos:
unittest.TestCase
setUp()teardown()skipTest(aMesg:string)fail(aMesg:string)id():stringshortDescription():string
En el primer conjunto están los ganchos de prueba previa y posterior. El método setup () comienza antes de cada rutina de prueba, el teardown () después de la rutina.
El segundo conjunto de métodos controla la ejecución de la prueba. Ambos métodos toman una cadena de mensaje como entrada y ambos cancelan una prueba en curso. Pero el método skiptest () aborta la prueba actual mientras que el método fail () falla por completo.
El último o tercer método ayuda a determinar la prueba. El método id () devuelve una cadena que consta del nombre del objeto del caso de prueba y de la rutina de prueba. Y el método shortDescription () devuelve el comentario docstr al inicio de cada rutina de prueba.
Ventajas de usar las pruebas unitarias de Python
- Le ayuda a detectar errores al principio del ciclo de desarrollo.
- Te ayuda a escribir mejores programas.
- Se sincroniza fácilmente con otros métodos y herramientas de prueba.
- Tendrá muchos menos errores
- Es más fácil de modificar en el futuro con muy pocas consecuencias.