Quando você faz alterações em seu código, é importante atualizar todos os testes para verificar o novo comportamento e capturar os bugs que o novo código introduziu. Bate-papo do Copiloto pode ajudá-lo a atualizar rapidamente os testes para refletir as alterações no código, garantindo que seu conjunto de testes permaneça alinhado à sua implementação.
Cenário de exemplo
Imagine que você tenha uma função Python, calculate_discountque determina o desconto para um determinado valor de compra. No código original, você obtém um desconto de 10% para valores acima de US$ 100. Você está fazendo alterações na lógica da função, para que apenas os preços acima de US $ 150 obtenham um desconto de 10%, e agora há um desconto de 20% para valores acima de US $ 200.
Código original
No código original, os preços de compra acima de US$ 100 recebem um desconto de 10%.
def calculate_discount(amount: float) -> float:
if amount > 100:
return amount * 0.1 # 10% discount
return 0.0
Código atualizado
No código alterado, apenas valores acima de US$150 obtêm um desconto de 10%, e valores acima de US$200 agora obtêm um desconto de 20%.
def calculate_discount(amount: float) -> float:
if amount > 200:
return amount * 0.2
elif amount > 150:
return amount * 0.1
return 0.0
Testes existentes
Este exemplo mostra os testes existentes que foram escritos para o código original.
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()
Exemplo de solicitação
Você pode pedir Bate-papo do Copiloto para identificar e atualizar todos os testes afetados pela alteração lógica.
Given the update to the `calculate_discount` function, update the unit tests that may fail or become outdated as a result.
Resposta de exemplo
Resposta: Esta é um exemplo.
Bate-papo do Copiloto analisa seu código e testes existentes e identifica quais testes falharão ou tornaram-se enganosos após a alteração de código.
Por exemplo, Bate-papo do Copiloto explica que:
*
test_discount_above_100 agora falhará
*
test_discount_below_100 e test_discount_exactly_100 serão aprovados, mas agora são enganosos, já que o limite para os 10% de desconto agora é de US$ 150, e não US$ 100.
Além disso, Bate-papo do Copiloto identifica qualquer cobertura de teste faltante, como um novo nível de desconto de 20% para valores superiores a US$ 200.
Bate-papo do Copiloto propõe um conjunto atualizado de testes.
Testes atualizados
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()