Когда вы вносите изменения в код, важно обновлять тесты, чтобы проверить новое поведение и обнаружить баги, введённые новым кодом. Копилот Чат поможет вам быстро обновить тесты в соответствии с изменениями в коде, обеспечивая синхронизацию вашего тестового набора с реализацией.
Пример сценария
Представьте, что у вас есть функция на Python, calculate_discount, которая определяет скидку на определённую сумму покупки. В оригинальном коде вы получаете скидку в 10% на суммы свыше $100. Вы меняете логику функции: только цены выше $150 получают скидку в 10%, а теперь скидка в 20% для сумм выше $200.
Оригинальный код
В оригинальном коде цена покупки выше $100 получает скидку в 10%.
def calculate_discount(amount: float) -> float:
if amount > 100:
return amount * 0.1 # 10% discount
return 0.0
Обновлённый код
В изменённом коде скидку 10% получают только суммы выше $150, а суммы выше $200 — скидку в 20%.
def calculate_discount(amount: float) -> float:
if amount > 200:
return amount * 0.2
elif amount > 150:
return amount * 0.1
return 0.0
Существующие испытания
В этом примере показаны существующие тесты, написанные для исходного кода.
import unittest
from discount import calculate_discount
class TestCalculateDiscount(unittest.TestCase):
def test_discount_above_100(self):
# $140 should get a $14 discount (10%)
self.assertAlmostEqual(calculate_discount(140), 14.0)
def test_discount_below_100(self):
# $80 should get no discount
self.assertEqual(calculate_discount(80), 0.0)
def test_discount_exactly_100(self):
# $100 is not above 100, so no discount
self.assertEqual(calculate_discount(100), 0.0)
if __name__ == '__main__':
unittest.main()
Пример запроса
Вы можете попросить Копилот Чат выявить и обновить любые тесты, затронутые изменением вашей логики.
Given the update to the `calculate_discount` function, update the unit tests that may fail or become outdated as a result.
Пример отклика
Примечание.
Следующий ответ является примером. Ответы Копилот Чат являются недетерминированными, поэтому вы можете получить другой ответ, показанный здесь.
Копилот Чат анализирует ваш код и существующие тесты, а также определяет, какие тесты провалятся, либо теперь вводят в заблуждение после изменения вашего кода.
Например, Копилот Чат объясняет, что:
*
test_discount_above_100 теперь провалится
*
test_discount_below_100 и test_discount_exactly_100 пройдёт, но теперь они вводят в заблуждение, поскольку порог скидки в 10% теперь составляет $150, а не $100.
Кроме того, Копилот Чат выявляет отсутствие тестового покрытия, например, новый уровень дисконтов в 20% для сумм свыше $200.
Копилот Чат предлагает обновлённый набор тестов.
Обновлённые тесты
import unittest
from discount import calculate_discount
class TestCalculateDiscount(unittest.TestCase):
def test_discount_above_200(self):
# $250 should get a $50 discount (20%)
self.assertAlmostEqual(calculate_discount(250), 50.0)
def test_discount_above_150(self):
# $175 should get a $17.50 discount (10%)
self.assertAlmostEqual(calculate_discount(175), 17.5)
def test_discount_at_or_below_150(self):
# $150 is not above 150, so no discount
self.assertEqual(calculate_discount(150), 0.0)
# $80 should get no discount
self.assertEqual(calculate_discount(80), 0.0)
if __name__ == '__main__':
unittest.main()