Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Escritura de Pruebas con unittest | Pruebas con Unittest y Pytest
Programación Estructural en Python

Escritura de Pruebas con unittest

Desliza para mostrar el menú

Cuando se desea asegurar que el código funciona como se espera, la escritura de pruebas automatizadas es fundamental. El módulo unittest de Python es un marco integrado que permite crear y organizar pruebas fácilmente. Se crean casos de prueba mediante clases que heredan de unittest.TestCase. Dentro de estas clases, se definen métodos cuyos nombres comienzan con test_. Cada método verifica un aspecto específico del código.

Un conjunto de pruebas es una colección de casos de prueba que pueden ejecutarse juntos. Por defecto, unittest detecta y ejecuta todos los métodos test_ en las clases TestCase. Para comprobar si el código produce los resultados esperados, se utilizan métodos de aserción como assertEqual, assertTrue, assertFalse y assertRaises. Estos métodos de aserción comparan los resultados reales con los esperados e informan fallos si no coinciden.

Para ejecutar las pruebas, se puede utilizar la línea de comandos o llamar a unittest.main() al final del archivo de pruebas.

Note
Nota

assertRaises sigue un patrón distinto en comparación con otros métodos de aserción como assertEqual o assertTrue. En lugar de comprobar un valor final, funciona como un gestor de contexto utilizando la instrucción with para crear una zona protegida. Esto permite que la prueba supervise el código mientras se ejecuta y "capture" el error esperado.

1234567891011121314151617181920212223
import unittest def add(a, b): return a + b def divide(a, b): return a / b class TestMathFunctions(unittest.TestCase): def test_add_positive_numbers(self): self.assertEqual(add(2, 3), 5) def test_add_negative_numbers(self): self.assertEqual(add(-2, -3), -5) def test_divide_normal(self): self.assertAlmostEqual(divide(10, 2), 5.0) def test_divide_by_zero(self): with self.assertRaises(ZeroDivisionError): divide(10, 0) unittest.main(argv=['first-arg-is-ignored'], exit=False)
Note
Nota

La función unittest.main() en este capítulo incluye un par de parámetros adicionales requeridos solo para este entorno de aprendizaje. Ayudan a que el código se ejecute correctamente en la plataforma y no forman parte de los conceptos principales de Python que necesitas aprender en este momento.

question mark

¿Qué método de aserción de unittest deberías usar para comprobar que una llamada a función genera una excepción esperada?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 5. Capítulo 2

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 5. Capítulo 2
some-alt