Skip to main content

Создание модульных тестов

Copilot Chat может помочь в создании модульных тестов для функции.

Хороший набор модульных тестов имеет решающее значение для успешного выполнения любого проекта. Однако написание этих тестов может занять много времени и часто игнорируется. Copilot Chat поможет вам создать эти тесты.

Пример сценария

Представьте, что у вас есть функция Python, которая проверяет данные перед обновлением базы данных. Необходимо создать модульные тесты, чтобы убедиться, что проверка выполняет ожидаемый способ. Вы можете попросить Copilot Chat создать эти тесты.

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")

Пример запроса

/tests Generate unit tests for this function. Validate both success and failure, and include edge cases.

Пример отклика

Note

Следующий ответ является примером. Ответы Copilot Chat являются недетерминированными, поэтому вы можете получить другой ответ, показанный здесь.

Если вы впервые запрашиваете Copilot Chat для создания модульных тестов, вам может потребоваться настроить модульные тесты для проекта. В этом примере предполагается, что вы отклоните это предложение.

Copilot предоставит стратегию для создания тестов, а затем предоставить сами тесты.

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()

Дополнительные материалы