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 dabei helfen, die Tests schnell zu aktualisieren, sodass sie Ihren Codeänderungen entsprechen und Ihre Testsuite mit der 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 darum bitten, alle von Ihrer Logikänderung betroffenen Tests zu identifizieren und zu aktualisieren.
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 die bestehenden Tests und erkennt, welche Tests nach Ihrer Codeänderung fehlschlagen werden oder nun irreführend sind.
Beispielsweise erläutert Copilot-Chat wie folgt:
*
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 USD und nicht mehr bei 100 USD liegt.
Darüber hinaus identifiziert Copilot-Chat alle fehlenden Testabdeckungen, z. B. das neue Rabattniveau von 20 % für Beträge über 200 USD.
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()