Skip to main content

Gerando testes de unidade

O Bate-papo do Copiloto pode ajudar a gerar testes de unidade para uma função.

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

Copilot Chat prompt
/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()

Leitura adicional