Lorsque vous apportez des modifications à votre code, il est important de mettre à jour les tests afin de vérifier le nouveau comportement et d’intercepter les bogues introduits par le nouveau code. Discussion avec Copilot peut vous aider à mettre à jour rapidement les tests pour qu’ils correspondent à vos modifications de code, ce qui garantit que votre suite de tests reste synchronisée avec votre implémentation.
Exemple de scénario
Imaginez que vous disposez d’une fonction Python, calculate_discountqui détermine la remise pour un montant d’achat donné. Dans le code d’origine, vous obtenez une remise de 10% pour les montants de plus de 100 $. Vous apportez des modifications à la logique de la fonction, de sorte que seuls les prix de plus de 150 $ obtiennent une remise de 10%, et il y a maintenant une remise de 20% pour les montants de plus de 200 $.
Code d’origine
Dans le code d’origine, les prix d’achat supérieurs à 100 $ obtiennent une remise de 10%.
def calculate_discount(amount: float) -> float:
if amount > 100:
return amount * 0.1 # 10% discount
return 0.0
Code mis à jour
Dans le code modifié, seuls les montants supérieurs à 150 $ obtiennent 10% remise, et les montants supérieurs à 200 $ obtiennent maintenant une remise 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
Tests existants
Cet exemple montre les tests existants qui ont été écrits pour le code d’origine.
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()
Exemples d’invite
Vous pouvez demander Discussion avec Copilot pour identifier et mettre à jour tous les tests affectés par votre modification logique.
Given the update to the `calculate_discount` function, update the unit tests that may fail or become outdated as a result.
Exemple de réponse
Remarque
La réponse suivante est un exemple. Les réponses Discussion avec Copilot ne sont pas déterministes, vous pouvez donc obtenir une réponse différente de celle affichée ici.
Discussion avec Copilot analyse votre code et vos tests existants, et identifie les tests qui échouent ou sont désormais trompeurs en suivant votre modification de code.
Par exemple, Discussion avec Copilot explique que :
-
`test_discount_above_100` **va échouer** -
`test_discount_below_100` et `test_discount_exactly_100` passeront, mais ils sont maintenant **trompeurs**, puisque le seuil de la remise de 10% est maintenant de 150 $, et non pas 100 $.
En outre, Discussion avec Copilot identifie toute couverture de test manquante, telle que le nouveau niveau de remise de 20% pour les montants de plus de 200 $.
Discussion avec Copilot propose un ensemble de tests mis à jour.
Mises à jour des 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()