Skip to main content

Générer des tests unitaires

Copilot Chat peut aider à générer des tests unitaires pour une fonction.

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

Note

La réponse suivante est un exemple. Copilot Chat Les réponses ne sont pas déterministes, il est donc possible que vous obteniez une réponse différente de celle présentée ici.

Si c'est la première fois que vous demandez à Copilot Chat de générer des tests unitaires, il peut vous demander 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()

Pour aller plus loin