Skip to main content

Gerar testes de unidade

O Copilot Chat pode ajudar a gerar testes de unidade para uma função.

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()

Leitura adicional