{"meta":{"title":"Создание модульных тестов","intro":"Copilot Chat может помочь с генерацией модульных тестов для функции.","product":"GitHub Copilot","breadcrumbs":[{"href":"/ru/copilot","title":"GitHub Copilot"},{"href":"/ru/copilot/tutorials","title":"Учебники"},{"href":"/ru/copilot/tutorials/copilot-cookbook","title":"Кулинарная книга GitHub Copilot"},{"href":"/ru/copilot/tutorials/copilot-cookbook/testing-code","title":"Тестирование кода"},{"href":"/ru/copilot/tutorials/copilot-cookbook/testing-code/generate-unit-tests","title":"Создание модульных тестов"}],"documentType":"article"},"body":"# Создание модульных тестов\n\nCopilot Chat может помочь с генерацией модульных тестов для функции.\n\nХороший набор модульных тестов критически важен для успеха любого project. Однако написание этих тестов может занять много времени и часто игнорируется.\nCopilot Chat может помочь вам провести эти тесты.\n\n## Пример сценария\n\nПредставьте, что у вас есть функция Python, которая проверяет данные перед обновлением базы данных. Необходимо создать модульные тесты, чтобы убедиться, что проверка выполняет ожидаемый способ. Вы можете попросить Copilot Chat провести эти тесты для вас.\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] Следующий ответ является примером. Ответы Copilot Chat являются недетерминированными, поэтому вы можете получить другой ответ, показанный здесь.\n\nЕсли это ваш первый раз, когда вы просите Copilot Chat генерировать модульные тесты, возможно, вас спросят, хотите ли вы настроить модульные тесты для вашего проекта. В этом примере предполагается, что вы отклоните это предложение.\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/concepts/prompting/prompt-engineering)\n* [Лучшие практики использования GitHub Copilot](/ru/copilot/get-started/best-practices)"}