{"meta":{"title":"Создание модульных тестов","intro":"Копилот Чат может помочь в создании модульных тестов для функции.","product":"GitHub Copilot","breadcrumbs":[{"href":"/ru/copilot","title":"GitHub Copilot"},{"href":"/ru/copilot/tutorials","title":"Учебники"},{"href":"/ru/copilot/tutorials/copilot-chat-cookbook","title":"Кулинарная книга чата GitHub Copilot"},{"href":"/ru/copilot/tutorials/copilot-chat-cookbook/testing-code","title":"Тестирование кода"},{"href":"/ru/copilot/tutorials/copilot-chat-cookbook/testing-code/generate-unit-tests","title":"Создание модульных тестов"}],"documentType":"article"},"body":"# Создание модульных тестов\n\nКопилот Чат может помочь в создании модульных тестов для функции.\n\nХороший набор модульных тестов критически важен для успеха любого project. Однако написание этих тестов может занять много времени и часто игнорируется. Копилот Чат поможет вам создать эти тесты.\n\n## Пример сценария\n\nПредставьте, что у вас есть функция Python, которая проверяет данные перед обновлением базы данных. Необходимо создать модульные тесты, чтобы убедиться, что проверка выполняет ожидаемый способ. Вы можете попросить Копилот Чат создать эти тесты.\n\n```python id=validate-price\ndef validate_price(price: float):\n  if price <= 0:\n    raise ValueError(\"Price must be greater than 0\")\n  if price > 1000:\n    raise ValueError(\"Price must be less than or equal to 1000\")\n```\n\n## Пример запроса\n\n```copilot copy prompt ref=validate-price\n/tests Generate unit tests for this function. Validate both success and failure, and include edge cases.\n```\n\n## Пример отклика\n\n> \\[!NOTE] Следующий ответ является примером. Ответы Копилот Чат являются недетерминированными, поэтому вы можете получить другой ответ, показанный здесь.\n\nЕсли вы впервые просите Копилот Чат генерировать юнит-тесты, возможно, вас спросят, хотите ли вы настроить модульные тесты для вашего project. В этом примере предполагается, что вы отклоните это предложение.\n\nCopilot предоставит стратегию для создания тестов, а затем предоставить сами тесты.\n\n```python\nimport unittest\nfrom generate_unit_tests import validate_price\n\nclass TestValidateProduct(unittest.TestCase):\n  def test_price_zero(self):\n    with self.assertRaises(ValueError) as context:\n      validate_price(0)\n    self.assertEqual(str(context.exception), \"Price must be greater than 0\")\n\n  def test_price_negative(self):\n    with self.assertRaises(ValueError) as context:\n      validate_price(-10)\n    self.assertEqual(str(context.exception), \"Price must be greater than 0\")\n\n  def test_price_above_limit(self):\n    with self.assertRaises(ValueError) as context:\n      validate_price(1500)\n    self.assertEqual(str(context.exception), \"Price must be less than or equal to 1000\")\n\n  def test_price_edge_case_zero(self):\n    with self.assertRaises(ValueError) as context:\n      validate_price(0)\n    self.assertEqual(str(context.exception), \"Price must be greater than 0\")\n\n  def test_price_edge_case_max(self):\n    try:\n      validate_price(1000)\n    except ValueError:\n      self.fail(\"validate_price() raised ValueError unexpectedly!\")\n\nif __name__ == '__main__':\n  unittest.main()\n```\n\n## Дополнительные материалы\n\n* [Инженерия подсказок для GitHub Copilot Chat](/ru/copilot/using-github-copilot/prompt-engineering-for-github-copilot)\n* [Лучшие практики использования GitHub Copilot](/ru/copilot/using-github-copilot/best-practices-for-using-github-copilot)"}