Tutorial de PyUnit: Python Marco de pruebas unitarias (con ejemplo)

⚡ Resumen inteligente

Python Las pruebas unitarias comprueban pequeñas partes de tu código de forma aislada para detectar errores a tiempo. Aquí aprenderás técnicas de pruebas unitarias, el framework PyUnit (unittest), sus clases clave, cómo diseñar un caso de prueba y un ejemplo práctico.

  • 🧪 Qué es: Las pruebas unitarias verifican pequeñas unidades de código aisladas para detectar errores en una etapa temprana.
  • 🔬 técnicas: TDD, los stubs y los mocks aíslan el código para que las pruebas unitarias sean independientes.
  • 🐍 Unidad Py: PythonEl módulo unittest integrado de (PyUnit) es una adaptación de JUnit.
  • 🧱 Clases clave: Caso de prueba, conjunto de pruebas, cargador de pruebas, ejecutor de pruebas de texto y resultados de pruebas.
  • 🤖 Ayuda de IA: Las herramientas de IA como Copilot generan casos de prueba unitarias al instante.

Python Examen de la unidad

¿Qué es la prueba unitaria?

Examen de la unidad in Python se realiza para identificar errores en las primeras etapas 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 unitaria es un marco orientado a objetos basado en dispositivos de prueba.

Python Técnicas de prueba unitaria

Python Las pruebas unitarias implican principalmente probar un módulo en particular sin acceder a ningún código dependiente. Los desarrolladores pueden utilizar técnicas como resguardos 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 el Python, y para eso los desarrolladores utilizan el método de desarrollo basado en pruebas. En el método TDD, primero diseñas Python Pruebas unitarias y solo entonces continúas escribiendo el código que implementará esta característica.
  • Talones y simulacros: Son dos técnicas principales que simulan métodos falsos que se están probando. A Talón se utiliza para completar alguna dependencia requerida para que la prueba unitaria se ejecute correctamente. A Burlarse de por otro lado es un objeto falso que ejecuta las pruebas donde ponemos afirmar.

    Las intenciones de ambos métodos son las mismas: eliminar la prueba de todas las dependencias de una clase o función.

Python Marco de pruebas unitarias

Para facilitar el proceso de Pruebas Unitarias y mejorar la calidad de su proyecto, se recomienda el Python Marco de pruebas unitarias. El marco de pruebas unitarias incluye

Python Técnicas de prueba unitaria

  • Unidad Py: PyUnit admite accesorios, casos de prueba, conjuntos de pruebas y un ejecutor de pruebas para las pruebas automatizadas del código. En PyUnit, puede organizar casos de prueba en suites con los mismos accesorios
  • Nariz: Los complementos integrados de Nose lo ayudan con la captura de resultados, la cobertura de código, las pruebas documentales, etc. La sintaxis de Nose es bastante más simple y reduce las barreras para escribir pruebas. se extiende Python unittest para facilitar las pruebas.
  • Prueba documental: El script de prueba de Doctest va en una cadena de documentación 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 arrojaron 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.

Pruebas unitarias con PyUnit

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

Pruebas unitarias con PyUnit

  • Clase TestCase: La clase TestCase contiene las rutinas de prueba y proporciona ganchos para realizar cada rutina y limpiar posteriormente.
  • Clase TestSuite: Funciona como un contenedor de colección y puede poseer múltiples objetos de casos de prueba y múltiples objetos de conjuntos de pruebas.
  • clase TestLoader: esta clase carga casos y suites de prueba definidos localmente o desde un archivo externo. Emite un conjunto de objetos de prueba que posee esos conjuntos y casos.
  • Clase TextTestRunner: Para ejecutar las pruebas, proporciona una plataforma estándar para ejecutar las pruebas.
  • La clase Resultados de la prueba: Ofrece un contenedor estándar para los resultados de la prueba.

Diseñar un caso de prueba para Python Pruebas usando PyUnit

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

Diseñar un caso de prueba para Python

prueba unitaria.Case de prueba

setUp()
teardown()

skipTest(aMesg:string)
fail(aMesg:string)

id():string
shortDescription():string

En el primer conjunto están los ganchos previos y posteriores a la prueba. El método setup() comienza antes de cada rutina de prueba, el desmontaje() 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 corto.Description() devuelve el comentario docstr al inicio de cada rutina de prueba.

Python Ejemplo de prueba unitaria

El siguiente ejemplo prueba una función add() simple con el módulo unittest. Cada método con el prefijo test_ se ejecuta automáticamente, y assertEqual compara el resultado con el valor esperado.

import unittest

def add(a, b):
    return a + b

class TestAdd(unittest.TestCase):
    def test_add_positive(self):
        self.assertEqual(add(2, 3), 5)

    def test_add_negative(self):
        self.assertEqual(add(-1, -1), -2)

if __name__ == "__main__":
    unittest.main()

Guarda el código y ejecútalo con python filename.py. El ejecutor de pruebas unitarias te informará cuántas pruebas pasaron o fallaron.

Ventajas de usar Python Prueba unitaria

  • Le ayuda a detectar errores en las primeras etapas 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 menos consecuencias.

Preguntas Frecuentes

Las pruebas unitarias verifican una pequeña unidad de código, como una función, de forma aislada. Permiten detectar errores en las primeras etapas del desarrollo, cuando son más económicos y fáciles de corregir.

PyUnit es PythonMarco de pruebas unitarias integrado de , disponible como el módulo unittest. Es una adaptación de JUnit y admite accesorios, casos de prueba, conjuntos de pruebas y un ejecutor de pruebas.

Crea una subclase de unittest.TestCase, escribe métodos que comiencen con test_ y usa aserciones como assertEqual dentro de ellos. Ejecuta el archivo con unittest.main() para ejecutar todas las pruebas.

La función setUp() se ejecuta antes de cada método de prueba para preparar los datos de prueba, mientras que tearDown() se ejecuta después de cada prueba para limpiar. Juntas, mantienen las pruebas independientes y repetibles.

Los stubs proporcionan datos fijos de los que depende una prueba, mientras que los mocks son objetos ficticios sobre los que se realizan las comprobaciones. Ambos reemplazan las dependencias reales, de modo que una unidad se prueba de forma aislada.

Los asistentes de IA como GitHub Copilot generan casos de prueba unitarias a partir de una función, sugieren casos límite y aserciones, y crean simulaciones para las dependencias a medida que escribes el código.

Sí. Las herramientas basadas en inteligencia artificial pueden automatizar la generación de conjuntos de pruebas, producir aserciones para los resultados esperados y aumentar la cobertura del código sugiriendo pruebas para las ramas no probadas.

unittest es PythonEl framework integrado utiliza clases y métodos assert, mientras que pytest es una biblioteca de terceros con instrucciones assert más sencillas y fixtures potentes. Ambos ejecutan pruebas unitarias.

Resumir este post con: