Saltar al contenido

Tutorial de PyUnit: Marco de pruebas de la unidad Python (con ejemplo)

diciembre 8, 2019

¿Qué es la prueba unitaria?

Las pruebas de unidades en Python se realizan para identificar los 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 de nivel de código escrita diseñada en Python para verificar una pequeña “unidad” de funcionalidad. La prueba de unidad es un marco de trabajo orientado a objetos basado en los dispositivos de prueba.

Técnicas de prueba de unidades Python

La prueba de unidades Python consiste principalmente en probar un módulo en particular sin acceder a ningún código dependiente. Los desarrolladores pueden utilizar técnicas como los talones y las burlas para separar el código en “unidades” y realizar pruebas a nivel de unidad en las piezas individuales.

  • Test-Driven Development TDD: La prueba de unidades debe realizarse junto con Python, y para ello los desarrolladores utilizan el método de desarrollo basado en pruebas. En el método TDD, primero se diseñan las pruebas de Python Unit y sólo entonces se continúa escribiendo el código que implementará esta característica.
  • Talones y burlas: Son dos técnicas principales que simulan métodos falsos que se están probando. A Stub se utiliza para rellenar alguna dependencia necesaria para que la prueba unitaria funcione correctamente. A 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 las pruebas de todas las dependencias de una clase o función.

Marco de pruebas de la unidad 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 de unidades incluye

  • PyUnit: PyUnit soporta accesorios, casos de prueba, suites de prueba y un corredor de prueba para la prueba automatizada del código. En PyUnit, puede organizar los casos de prueba en suites con los mismos dispositivos
  • Nose: Los plug-ins integrados en Nose le ayudan con la captura de salida, cobertura de código, pruebas de documentos, etc. La sintaxis de la nariz es bastante más simple y reduce las barreras a las pruebas de escritura. Extiende la prueba unitaria de Python para facilitar las pruebas.
  • Doctest : El script de prueba de Doctest va en docstring 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 devuelven los resultados esperados. El caso de uso de doctest es menos detallado y no capta casos especiales. Son útiles como documentación expresiva del caso de uso principal de un módulo y sus componentes.

Pruebas de unidades con PyUnit

Pyunit es un puerto Python de JUnit. Como parte de Pyunit, en el módulo de pruebas unitarias hay cinco clases clave.

  • Clase TestCase : La clase TestCase soporta las rutinas de prueba y entrega los ganchos para hacer cada rutina y limpiar después
  • Clase TestSuite : Sirve como contenedor de colección, y puede poseer múltiples objetos testcase y múltiples objetos testsuites
  • Clase TestLoader : Esta clase carga casos de prueba y suites definidos localmente o desde un archivo externo. Emite un objeto de testuite que posee esas suites y casos
  • Clase TextTestRunner : Para ejecutar las pruebas, dispone de una plataforma estándar para ejecutar las pruebas
  • La clase TestResults : Ofrece un contenedor estándar para los resultados de la prueba

Diseño de un caso de prueba para la prueba de Python utilizando PyUnit

Una prueba de unidad proporciona una clase base, un caso de prueba, que puede utilizarse para crear nuevos casos de prueba. Para diseñar el caso de prueba, se utilizan tres conjuntos de métodos

unittest.testCase

setUp()
desmontaje()
skipTest(aMesg:cadena)
fail(aMesg:cadena)
id():cadena
shortDescription():string

>

En el primer juego están los ganchos de pre y post prueba. El método setup() comienza antes de cada rutina de prueba, el desmontaje() después de la rutina.

El segundo grupo de métodos controla la ejecución de las pruebas. Ambos métodos toman una cadena de mensajes 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 completamente.

El último o tercer método ayuda a determinar la prueba. El método id() devuelve una cadena que consiste en el nombre del objeto testcase 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 de Python Unit

  • Le ayuda a detectar errores al principio del ciclo de desarrollo
  • Le 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 modificar en el futuro con menos consecuencias