Um bom conjunto de testes de unidade é essencial para que o projeto seja bem-sucedido. No entanto, escrever esses testes pode ser algo demorado e, muitas vezes, negligenciado. O Bate-papo do Copiloto pode ajudar a gerar esses testes para você.
Cenário de exemplo
Considere que você tenha uma função Python que valide os dados antes de atualizar o banco de dados. Você precisa criar testes de unidade a fim de garantir que a validação seja executada da maneira esperada. Você pode solicitar que Bate-papo do Copiloto gere esses testes para você.
def validate_price(price: float):
if price <= 0:
raise ValueError("Price must be greater than 0")
if price > 1000:
raise ValueError("Price must be less than or equal to 1000")
Solicitação de exemplo
/tests Generate unit tests for this function. Validate both success and failure, and include edge cases.
def validate_price(price: float):
if price <= 0:
raise ValueError("Price must be greater than 0")
if price > 1000:
raise ValueError("Price must be less than or equal to 1000")
/tests Generate unit tests for this function. Validate both success and failure, and include edge cases.
/tests Generate unit tests for this function. Validate both success and failure, and include edge cases.
Exemplo de resposta
Observação
A resposta a seguir é um exemplo. Respostas do Bate-papo do Copiloto são não determinísticas, portanto, você pode obter uma resposta diferente da mostrada aqui.
Se essa for sua primeira vez solicitando que Bate-papo do Copiloto crie testes de unidade, ele poderá perguntar se você deseja configurar os testes de unidade para o projeto. Para esse exemplo, estamos supondo que você recuse essa oferta.
O Copilot fornecerá uma estratégia a fim de gerar os testes e, em seguida, fornecerá os próprios testes.
import unittest
from generate_unit_tests import validate_price
class TestValidateProduct(unittest.TestCase):
def test_price_zero(self):
with self.assertRaises(ValueError) as context:
validate_price(0)
self.assertEqual(str(context.exception), "Price must be greater than 0")
def test_price_negative(self):
with self.assertRaises(ValueError) as context:
validate_price(-10)
self.assertEqual(str(context.exception), "Price must be greater than 0")
def test_price_above_limit(self):
with self.assertRaises(ValueError) as context:
validate_price(1500)
self.assertEqual(str(context.exception), "Price must be less than or equal to 1000")
def test_price_edge_case_zero(self):
with self.assertRaises(ValueError) as context:
validate_price(0)
self.assertEqual(str(context.exception), "Price must be greater than 0")
def test_price_edge_case_max(self):
try:
validate_price(1000)
except ValueError:
self.fail("validate_price() raised ValueError unexpectedly!")
if __name__ == '__main__':
unittest.main()