{"meta":{"title":"Обновление модульных тестов для соответствия изменениям кода","intro":"Копилот Чат Может помочь с обновлением ваших тестов.","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/update-unit-tests","title":"Обновление модульных тестов"}],"documentType":"article"},"body":"# Обновление модульных тестов для соответствия изменениям кода\n\nКопилот Чат Может помочь с обновлением ваших тестов.\n\nКогда вы вносите изменения в код, важно обновлять тесты, чтобы проверить новое поведение и обнаружить баги, введённые новым кодом.\nКопилот Чат Это поможет вам быстро обновить тесты в соответствии с изменениями в коде, обеспечивая синхронизацию вашего тестового пакета с вашей реализацией.\n\n## Пример сценария\n\nПредставьте, что у вас есть функция на Python, `calculate_discount`, которая определяет скидку на определённую сумму покупки. В оригинальном коде вы получаете скидку в 10% на суммы свыше $100. Вы меняете логику функции: только цены выше $150 получают скидку в 10%, а теперь скидка в 20% для сумм выше $200.\n\n### Оригинальный код\n\nВ оригинальном коде цена покупки выше $100 получает скидку в 10%.\n\n```python\ndef calculate_discount(amount: float) -> float:\n    if amount > 100:\n        return amount * 0.1  # 10% discount\n    return 0.0\n```\n\n### Обновлённый код\n\nВ изменённом коде скидку 10% получают только суммы выше $150, а суммы выше $200 — скидку в 20%.\n\n```python id=calculate_discount\ndef calculate_discount(amount: float) -> float:\n    if amount > 200:\n        return amount * 0.2  \n    elif amount > 150:\n        return amount * 0.1\n    return 0.0\n```\n\n### Существующие испытания\n\nВ этом примере показаны существующие тесты, написанные для исходного кода.\n\n```python\nimport unittest\nfrom discount import calculate_discount\n\nclass TestCalculateDiscount(unittest.TestCase):\n    def test_discount_above_100(self):\n        # $140 should get a $14 discount (10%)\n        self.assertAlmostEqual(calculate_discount(140), 14.0)\n    \n    def test_discount_below_100(self):\n        # $80 should get no discount\n        self.assertEqual(calculate_discount(80), 0.0)\n\n    def test_discount_exactly_100(self):\n        # $100 is not above 100, so no discount\n        self.assertEqual(calculate_discount(100), 0.0)\n\nif __name__ == '__main__':\n    unittest.main()\n```\n\n## Пример запроса\n\nВы можете попросить Копилот Чат выявить и обновить любые тесты, затронутые изменением вашей логики.\n\n```copilot\nGiven the update to the `calculate_discount` function, update the unit tests that may fail or become outdated as a result.\n```\n\n## Пример ответа\n\n> \\[!NOTE] Следующий ответ является примером. Ответы Копилот Чат являются недетерминированными, поэтому вы можете получить другой ответ, показанный здесь.\n\nКопилот Чат анализирует ваш код и существующие тесты, а также определяет, какие тесты провалятся, либо которые теперь вводят в заблуждение после изменения кода.\n\nНапример, Копилот Чат объясняет, что:\n\n* `test_discount_above_100` теперь **провалится**\n* `test_discount_below_100` и `test_discount_exactly_100` пройдёт, но теперь они **вводят в заблуждение**, поскольку порог скидки в 10% теперь составляет $150, а не $100.\n\nКроме того, Копилот Чат выявляет **отсутствие страхового покрытия,** например, новый уровень дисконтов в 20% для сумм свыше $200.\n\nКопилот Чат предлагает обновлённый набор тестов.\n\n### Обновлённые тесты\n\n```python\nimport unittest\nfrom discount import calculate_discount\n\nclass TestCalculateDiscount(unittest.TestCase):\n    def test_discount_above_200(self):\n        # $250 should get a $50 discount (20%)\n        self.assertAlmostEqual(calculate_discount(250), 50.0)\n\n    def test_discount_above_150(self):\n        # $175 should get a $17.50 discount (10%)\n        self.assertAlmostEqual(calculate_discount(175), 17.5)\n\n    def test_discount_at_or_below_150(self):\n        # $150 is not above 150, so no discount\n        self.assertEqual(calculate_discount(150), 0.0)\n        # $80 should get no discount\n        self.assertEqual(calculate_discount(80), 0.0)\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)"}