Une bonne suite de tests unitaires est essentielle au succĂšs de nâimporte quel projet. Toutefois, lâĂ©criture de ces tests peut prendre du temps et sont souvent nĂ©gligĂ©s. Copilot Chat peut vous aider Ă gĂ©nĂ©rer ces tests.
Exemple de scénario
Imaginez que vous disposez dâune fonction Python qui valide les donnĂ©es avant de mettre Ă jour la base de donnĂ©es. Vous devez crĂ©er des tests unitaires pour vous assurer que la validation effectue la façon dont vous vous attendez. Vous pouvez demander Ă Copilot Chat de gĂ©nĂ©rer ces tests pour vous.
def validate_price(price: float):
if price <= 0:
raise ValueError("Price must be greater than 0")
if price > 1000:
raise ValueError("Price must be less than or equal to 1000")
Exemples dâinvite
/tests Generate unit tests for this function. Validate both success and failure, and include edge cases.
Exemple de réponse
Remarque
La réponse suivante est un exemple. Les réponses Copilot Chat ne sont pas déterministes, vous pouvez donc obtenir une réponse différente de celle affichée ici.
Si c'est la premiÚre fois que vous demandez à Copilot Chat de générer des tests unitaires, il se peut qu'il vous demande si vous souhaitez configurer des tests unitaires pour votre projet. Pour cet exemple, nous partons du principe que vous refusez cette offre.
Copilot fournira une stratĂ©gie pour gĂ©nĂ©rer les tests, puis fournira les tests eux-mĂȘmes.
import unittest
from generate_unit_tests import validate_price
class TestValidateProduct(unittest.TestCase):
def test_price_zero(self):
with self.assertRaises(ValueError) as context:
validate_price(0)
self.assertEqual(str(context.exception), "Price must be greater than 0")
def test_price_negative(self):
with self.assertRaises(ValueError) as context:
validate_price(-10)
self.assertEqual(str(context.exception), "Price must be greater than 0")
def test_price_above_limit(self):
with self.assertRaises(ValueError) as context:
validate_price(1500)
self.assertEqual(str(context.exception), "Price must be less than or equal to 1000")
def test_price_edge_case_zero(self):
with self.assertRaises(ValueError) as context:
validate_price(0)
self.assertEqual(str(context.exception), "Price must be greater than 0")
def test_price_edge_case_max(self):
try:
validate_price(1000)
except ValueError:
self.fail("validate_price() raised ValueError unexpectedly!")
if __name__ == '__main__':
unittest.main()