Skip to main content

Aktualisieren von Komponententests zur Anpassung an Codeänderungen

Copilot-Chat kann bei der Aktualisierung Ihrer Tests hilfreich sein.

Wenn Sie Änderungen am Code vornehmen, ist es wichtig, alle Tests zu aktualisieren, um das neue Verhalten zu überprüfen und alle Fehler abzufangen, die der neue Code eingeführt hat. Copilot-Chat kann Ihnen helfen, Tests schnell zu aktualisieren, um Ihren Codeänderungen zu entsprechen, um sicherzustellen, dass Ihre Testsuite mit Ihrer Implementierung synchronisiert bleibt.

Beispielszenario

Stellen Sie sich vor, Sie haben eine Python-Funktion, calculate_discountdie den Rabatt für einen bestimmten Einkaufsbetrag bestimmt. Im ursprünglichen Code erhalten Sie einen Rabatt von 10% für Beträge über 100 $. Sie nehmen Änderungen an der Logik der Funktion vor, sodass nur Preise über 150 $ einen Rabatt von 10% erhalten, und es gibt jetzt einen Rabatt von 20% für Beträge über 200 $.

Originalcode

Im ursprünglichen Code erhalten die Kaufpreise über 100 $ einen Rabatt von 10%.

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

Aktualisierter Code

Im geänderten Code erhalten nur Beträge über $ 150 erhalten 10% Rabatt, und Beträge über $ 200 erhalten jetzt einen Rabatt von 20%.

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

Vorhandene Tests

Dieses Beispiel zeigt die vorhandenen Tests, die für den ursprünglichen Code geschrieben wurden.

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()

Beispielaufforderung

Sie können Copilot-Chat bitten, alle Tests zu identifizieren und zu aktualisieren, die von Ihrer Logikänderung betroffen sind.

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

Beispielantwort

Hinweis

Die folgende Antwort ist ein Beispiel. Da die Copilot-Chat-Antworten nicht deterministisch sind, erhältst du möglicherweise eine andere Antwort als die hier beschriebene.

Copilot-Chat analysiert Ihren Code und vorhandene Tests und identifiziert, welche Tests fehlschlagen oder jetzt irreführend sind, nachdem Sie die Codeänderung geändert haben.

Zum Beispiel erklärt Copilot-Chat:

  • test_discount_above_100 wird jetzt fehlschlagen
  • test_discount_below_100 und test_discount_exactly_100 werden übergeben, sind aber jetzt irreführend, da der Schwellenwert für den 10%-Rabatt jetzt bei $150 und nicht $100 liegt.

Darüber hinaus Copilot-Chat identifiziert jede fehlende Testabdeckung, z. B. die neue 20% Rabattstufe für Beträge über 200 $.

Copilot-Chat schlägt eine aktualisierte Gruppe von Tests vor.

Aktualisierte Tests

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()

Weiterführende Lektüre