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: