Skip to main content

Actualización de pruebas unitarias para que coincidan con los cambios de código

chat de Copilot puede ayudar a actualizar los tests.

Al realizar cambios en el código, es importante actualizar las pruebas para comprobar el nuevo comportamiento y detectar los errores que haya introducido el nuevo código. chat de Copilot puede ayudarle a actualizar rápidamente las pruebas para que coincidan con los cambios de código, lo que garantiza que el conjunto de pruebas permanece sincronizado con la implementación.

Escenario de ejemplo

Imagine que tiene una función de Python, calculate_discount, que determina el descuento de un importe de compra determinado. En el código original, obtendrá un descuento de 10% por importes superiores a 100 USD. Está realizando cambios en la lógica de la función, de modo que solo los precios superiores a 150 USD obtengan un descuento del 10% y ahora hay un descuento del 20% para montos superiores a 200 USD.

Código original

En el código original, los precios de compra por encima de $100 obtienen un descuento de 10%.

def calculate_discount(amount: float) -> float:
    if amount > 100:
        return amount * 0.1  # 10% discount
    return 0.0

Código actualizado

En el código modificado, solo los importes superiores a $150 obtienen 10% descuento, y los importes superiores a $200 ahora obtienen un descuento de 20%.

def calculate_discount(amount: float) -> float:
    if amount > 200:
        return amount * 0.2  
    elif amount > 150:
        return amount * 0.1
    return 0.0

Pruebas existentes

En este ejemplo se muestran las pruebas existentes escritas para el código original.

import unittest
from discount import calculate_discount

class TestCalculateDiscount(unittest.TestCase):
    def test_discount_above_100(self):
        # $140 should get a $14 discount (10%)
        self.assertAlmostEqual(calculate_discount(140), 14.0)
    
    def test_discount_below_100(self):
        # $80 should get no discount
        self.assertEqual(calculate_discount(80), 0.0)

    def test_discount_exactly_100(self):
        # $100 is not above 100, so no discount
        self.assertEqual(calculate_discount(100), 0.0)

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

Ejemplo de sugerencia

Puede pedir a chat de Copilot que identifique y actualice las pruebas afectadas por el cambio en la lógica.

Given the update to the `calculate_discount` function, update the unit tests that may fail or become outdated as a result.

Respuesta de ejemplo

Nota:

La respuesta siguiente es un ejemplo. Las respuestas de chat de Copilot no son deterministas, por lo que puedes obtener una respuesta diferente a la aquí mostrada.

chat de Copilot analiza el código y las pruebas existentes, e identifica qué pruebas producirán un error o ahora son engañosas después del cambio de código.

Por ejemplo, chat de Copilot explica que: * test_discount_above_100 ahora tendrá errores * test_discount_below_100 y test_discount_exactly_100 seguirán siendo válidos, pero ahora son confusos, ya que el umbral del 10% de descuento es de $150 y no de $100.

Además, chat de Copilot identifica cualquier cobertura de prueba que falte, como el nuevo plan de descuento del 20% para importes superiores a 200 dólares.

chat de Copilot propone un conjunto actualizado de pruebas.

Pruebas actualizadas

import unittest
from discount import calculate_discount

class TestCalculateDiscount(unittest.TestCase):
    def test_discount_above_200(self):
        # $250 should get a $50 discount (20%)
        self.assertAlmostEqual(calculate_discount(250), 50.0)

    def test_discount_above_150(self):
        # $175 should get a $17.50 discount (10%)
        self.assertAlmostEqual(calculate_discount(175), 17.5)

    def test_discount_at_or_below_150(self):
        # $150 is not above 150, so no discount
        self.assertEqual(calculate_discount(150), 0.0)
        # $80 should get no discount
        self.assertEqual(calculate_discount(80), 0.0)

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

Lectura adicional