¿Cómo realizar pruebas unitarias en Python?
Foto por autor
Las pruebas código por código son necesarias para garantizar que su código cumpla con los estándares de calidad y funcione como se espera. Mientras preparamos una receta simple, la probamos en diferentes etapas y ajustamos los sabores en consecuencia. Al extender este concepto al código, revisamos constantemente nuestro código para confirmar que sea correcto. Cuando se trata de pruebas, podemos hacer pruebas manuales o automatizadas, pero las pruebas manuales son un proceso tedioso y lento. Las pruebas automatizadas implican la ejecución de pruebas por un script en lugar de un humano. Las pruebas automatizadas incluyen pruebas unitarias, pruebas de integración, pruebas de estrés, etc. Existen diferentes tipos de pruebas como , pero nos centraremos en las pruebas unitarias para este tutorial.
La prueba unitaria es una técnica en la que se analizan secciones individuales en busca de errores para que su código sea estable y esté preparado para el futuro. Estas unidades pueden ser funciones individuales, una clase completa o un módulo completo. En la mayoría de los casos, estas secciones no tienen dependencias con otras partes del código. Esto es importante porque estas unidades son los componentes básicos de su aplicación y, si se rompen, debe romper su aplicación. También aumenta la productividad de los desarrolladores y fomenta la programación modular.
Hay muchas ejecuciones de prueba disponibles para Python, p.
- Prueba de unidad
- Pytest
- Nariz 2
- A declarar
- prueba de documento
Para este tutorial, usaremos unittest, un marco de prueba integrado en la biblioteca estándar de Python. Incluye un marco de prueba y un programa de prueba y ofrece una variedad de funciones, desde la automatización de prueba y la recopilación de prueba hasta la independencia de prueba del marco de informes. Tiene los siguientes requisitos:
- Cada prueba unitaria se puede crear como un método que amplía la clase TestCase y antepone su método con prueba para informar al evaluador sobre los métodos de prueba.
- Usando una secuencia de métodos de validación específicos que determinan si un caso de prueba pasa o falla. Algunos de los métodos de autenticación más utilizados se mencionan a continuación:
Método | Descripción |
.assertEqual(a, b) | un == segundo |
.assertNotEqual(a, b) | un != segundo |
.assertTrue(x) | booleano(x) Verdadero |
.assertFalse(x) | booleano(x) Falso |
.assertIs(a, b) | abdominales |
.assertIs(a, b) | no ab |
.assertIsNone(x) | x no es ninguno |
.assertIsNotNone(x) | Ninguno |
.assertIn(a,b) | a en b |
.assertNotIn(a,b) | a no está en b |
.assertIsInstance(a, b) | ejemplo (a, b) |
.assertNotIsInstance(a, b) | ejemplo no (a, b) |
Fuente: unir documentos oficiales
- Escriba el código que desea probar en un archivo de Python ejemplo.py.
- Cree un nuevo archivo de Python para sus pruebas unitarias, comenzando con la prueba de palabras clave prueba_ejemplo.py.
- importarlo módulo de prueba de unidad y ejemplo.py.
- Crear una clase que amplíe la clase prueba unitaria Caso de prueba.
- Escriba los métodos de prueba que comiencen con la palabra clave de prueba como test_functionName(self) y usar métodos de validación para probar el comportamiento del código bajo prueba.
- Ejecute el comando python -m prueba unitaria prueba_ejemplo.py llamar y ejecutar el método principal de la prueba unitaria en el terminal o archivo de prueba python prueba_ejemplo.py
Vamos a crear un archivo llamado calc.py calcula el area de un rectangulo.
def calc_rectangle_area(length, width):
return length * width
Crear un archivo de prueba test_calc.py y escribe el siguiente código:
import unittest
import calc
class TestRectangleArea(unittest.TestCase):
def test_area_calculation(self):
self.assertEqual(calc.calc_rectangle_area(2, 4), 8, "Incorrect area for a rectangle with length 2 and width 4")
self.assertEqual(calc.calc_rectangle_area(3, 5), 15, "Incorrect area for a rectangle with length 3 and width 5")
self.assertEqual(calc.calc_rectangle_area(10, 10), 100, "Incorrect area for a rectangle with length 10 and width 10")
if __name__ == '__main__':
unittest.main()
Correr pitón test_calc.py en tu terminal. Se mostrará la siguiente salida:
-----------------------------------------------------------
Ran 1 test in 0.001s
OK
Ahora cambie la fórmula del rectángulo de cálculo para verificar nuestros casos de prueba.
def calc_rectangle_area(length, width):
return length * width * 2
huir de nuevo python prueba_calc.py en tu terminal.
self.assertEqual(calc.calc_rectangle_area(2, 4), 8, "Incorrect area for a rectangle with length 2 and width 4")
AssertionError: 16 != 8: Incorrect area for a rectangle with length 2 and width 4
-----------------------------------------------------------
Ran 1 test in 0.001s
FAILED (failures=1)
También puede extender este código para manejar errores como la división por cero.
Si bien el módulo unittest nos brinda un conjunto básico de herramientas para escribir y ejecutar pruebas unitarias, también existen bibliotecas de terceros que ofrecen funciones más avanzadas. No obstante, las pruebas unitarias siguen siendo una parte importante del ciclo de vida del desarrollo de software y pueden ayudarlo a detectar errores antes de tiempo, lo que da como resultado un código más confiable y fácil de mantener. Espero que hayas disfrutado leyendo el artículo. Siéntase libre de compartir sus pensamientos o comentarios en la sección de comentarios.
Kanwal Mehrin es un desarrollador de software con un gran interés en la ciencia de datos y las aplicaciones de IA en medicina. Kanval ha sido seleccionado como becario de Google Generation 2022 para la región APAC. A Kanval le encanta compartir conocimientos técnicos escribiendo artículos sobre temas de actualidad y le apasiona mejorar la representación de las mujeres en la industria tecnológica.