Question
Mis clases Unit Test
Answers
GPT-4o mini
¡Claro! La realización de pruebas unitarias (unit tests) es una parte esencial del desarrollo de software, ya que permiten verificar que las distintas partes de tu código funcionen como se espera. Aquí te dejo una guía básica para crear clases de pruebas unitarias en Python utilizando la biblioteca `unittest`.
### Ejemplo de Clase a Probar
Primero, vamos a crear una clase simple con algunos métodos que queremos probar:
```python
# Calculadora.py
class Calculadora:
def sumar(self, a, b):
return a + b
def restar(self, a, b):
return a - b
def multiplicar(self, a, b):
return a * b
def dividir(self, a, b):
if b == 0:
raise ValueError("No se puede dividir por cero.")
return a / b
```
### Clase de Pruebas Unitarias
Ahora, crearemos una clase de pruebas para la clase `Calculadora` que hemos definido arriba:
```python
# test_calculadora.py
import unittest
from Calculadora import Calculadora
class TestCalculadora(unittest.TestCase):
def setUp(self):
self.calculadora = Calculadora()
def test_sumar(self):
self.assertEqual(self.calculadora.sumar(2, 3), 5)
self.assertEqual(self.calculadora.sumar(-1, 1), 0)
def test_restar(self):
self.assertEqual(self.calculadora.restar(5, 3), 2)
self.assertEqual(self.calculadora.restar(5, 10), -5)
def test_multiplicar(self):
self.assertEqual(self.calculadora.multiplicar(2, 3), 6)
self.assertEqual(self.calculadora.multiplicar(-1, 5), -5)
def test_dividir(self):
self.assertEqual(self.calculadora.dividir(6, 3), 2)
with self.assertRaises(ValueError):
self.calculadora.dividir(10, 0)
if __name__ == '__main__':
unittest.main()
```
### Explicación del Código
1. **Importaciones**: Importamos `unittest` para crear pruebas unitarias y la clase `Calculadora` que será probada.
2. **Clase de Pruebas**: `TestCalculadora` hereda de `unittest.TestCase` lo que le permite utilizar métodos de aserción para verificar comportamientos.
3. **setUp()**: Este método se llama antes de cada método de prueba. Aquí creamos una instancia de `Calculadora` que luego utilizaremos en nuestras pruebas.
4. **Métodos de Prueba**:
- Cada método que comienza con `test_` es una prueba. Utilizamos `self.assertEqual` para verificar que la salida de nuestros métodos coincida con lo esperado.
- En el caso de la división, comprobamos que se genere un `ValueError` si se intenta dividir entre cero, usando `self.assertRaises`.
5. **Ejecución**: Si ejecutamos este script directamente, `unittest.main()` ejecutará todas las pruebas definidas.
### Ejecución de las Pruebas
Para ejecutar las pruebas, puedes abrir tu terminal y ejecutar el siguiente comando:
```bash
python -m unittest test_calculadora.py
```
Esto ejecutará todas las pruebas en el archivo y te mostrará un resumen de los resultados.
### Conclusión
Las pruebas unitarias son una herramienta poderosa para garantizar que tu código funcione correctamente y te permiten realizar cambios de manera más segura sabiendo que puedes verificar el comportamiento de las funciones con confianza.
### Ejemplo de Clase a Probar
Primero, vamos a crear una clase simple con algunos métodos que queremos probar:
```python
# Calculadora.py
class Calculadora:
def sumar(self, a, b):
return a + b
def restar(self, a, b):
return a - b
def multiplicar(self, a, b):
return a * b
def dividir(self, a, b):
if b == 0:
raise ValueError("No se puede dividir por cero.")
return a / b
```
### Clase de Pruebas Unitarias
Ahora, crearemos una clase de pruebas para la clase `Calculadora` que hemos definido arriba:
```python
# test_calculadora.py
import unittest
from Calculadora import Calculadora
class TestCalculadora(unittest.TestCase):
def setUp(self):
self.calculadora = Calculadora()
def test_sumar(self):
self.assertEqual(self.calculadora.sumar(2, 3), 5)
self.assertEqual(self.calculadora.sumar(-1, 1), 0)
def test_restar(self):
self.assertEqual(self.calculadora.restar(5, 3), 2)
self.assertEqual(self.calculadora.restar(5, 10), -5)
def test_multiplicar(self):
self.assertEqual(self.calculadora.multiplicar(2, 3), 6)
self.assertEqual(self.calculadora.multiplicar(-1, 5), -5)
def test_dividir(self):
self.assertEqual(self.calculadora.dividir(6, 3), 2)
with self.assertRaises(ValueError):
self.calculadora.dividir(10, 0)
if __name__ == '__main__':
unittest.main()
```
### Explicación del Código
1. **Importaciones**: Importamos `unittest` para crear pruebas unitarias y la clase `Calculadora` que será probada.
2. **Clase de Pruebas**: `TestCalculadora` hereda de `unittest.TestCase` lo que le permite utilizar métodos de aserción para verificar comportamientos.
3. **setUp()**: Este método se llama antes de cada método de prueba. Aquí creamos una instancia de `Calculadora` que luego utilizaremos en nuestras pruebas.
4. **Métodos de Prueba**:
- Cada método que comienza con `test_` es una prueba. Utilizamos `self.assertEqual` para verificar que la salida de nuestros métodos coincida con lo esperado.
- En el caso de la división, comprobamos que se genere un `ValueError` si se intenta dividir entre cero, usando `self.assertRaises`.
5. **Ejecución**: Si ejecutamos este script directamente, `unittest.main()` ejecutará todas las pruebas definidas.
### Ejecución de las Pruebas
Para ejecutar las pruebas, puedes abrir tu terminal y ejecutar el siguiente comando:
```bash
python -m unittest test_calculadora.py
```
Esto ejecutará todas las pruebas en el archivo y te mostrará un resumen de los resultados.
### Conclusión
Las pruebas unitarias son una herramienta poderosa para garantizar que tu código funcione correctamente y te permiten realizar cambios de manera más segura sabiendo que puedes verificar el comportamiento de las funciones con confianza.