Um bom conjunto de testes de unidade é fundamental para o sucesso de qualquer projeto. No entanto, escrever esses testes pode ser demorado e muitas vezes é algo negligenciado. O Copilot Chat pode ajudar a gerar esses testes para você.
Cenário de exemplo
Imagine que você tenha uma função Python que valide os dados antes de atualizar o banco de dados. Você precisa criar testes de unidade para garantir que a validação seja executada da maneira esperada. Você pode solicitar que o Copilot Chat crie 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.
Exemplo de resposta
Note
A resposta a seguir é um exemplo. Respostas do Copilot Chat são não determinísticas, portanto, você pode obter uma resposta diferente da mostrada aqui.
Se esta for sua primeira vez solicitando que o Copilot Chat gere testes de unidade, ele poderá perguntar se você deseja configurar testes de unidade para seu projeto. Para este exemplo, estamos supondo que você recuse essa oferta.
O Copilot fornecerá uma estratégia para 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()