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_100wird jetzt fehlschlagentest_discount_below_100undtest_discount_exactly_100werden ü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()