"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Estrutura de teste unitário - unittest em Python

Estrutura de teste unitário - unittest em Python

Publicado em 2024-11-08
Navegar:236

Unit test framework - unittest in Python

Em Python, uma das estruturas de teste de unidade mais comumente usadas é unittest, que está incluída na biblioteca padrão. Ele fornece um rico conjunto de ferramentas para criar e executar testes, bem como relatar resultados.

Principais recursos da estrutura unittest

  1. Caso de teste: um caso de teste é criado subclassificando unittest.TestCase. Cada método da classe que começa com test_ é considerado um teste.

  2. Asserções: a estrutura fornece uma variedade de métodos de asserção para verificar os resultados esperados, como assertEqual, assertTrue, assertFalse, etc.

  3. Test Runner: A estrutura inclui um executor de testes que executa os testes e relata os resultados.

Estrutura básica de um teste unitário

  1. Importar o módulo unittest: comece importando a biblioteca unittest.

  2. Crie um caso de teste: defina uma classe que herda de unittest.TestCase.

  3. Definir métodos de teste: cada método deve começar com test_ e conter asserções para verificar o comportamento esperado.

  4. Executar os testes: Use unittest.main() para executar os testes se o script for executado diretamente.

Exemplo simples

Aqui está um exemplo simples que demonstra como usar a estrutura unittest para testar uma função simples.

Função a ser testada

Primeiro, vamos criar uma função simples que iremos testar:

matemática_funções.py

def add(a, b):
retornar um b

def subtrair(a, b):
retornar a - b

Teste unitário para a função

Agora, criaremos um teste unitário para as funções de adição e subtração:

test_math_functions.py

importar teste unitário
from math_functions import add, subtract # Importe as funções a serem testadas

class TestMathFunctions(unittest.TestCase):

def test_add(self):
    self.assertEqual(add(2, 3), 5)          # Test case: 2   3 = 5
    self.assertEqual(add(-1, 1), 0)         # Test case: -1   1 = 0
    self.assertEqual(add(0, 0), 0)          # Test case: 0   0 = 0

def test_subtract(self):
    self.assertEqual(subtract(5, 3), 2)     # Test case: 5 - 3 = 2
    self.assertEqual(subtract(-1, -1), 0)   # Test case: -1 - (-1) = 0
    self.assertEqual(subtract(0, 5), -5)    # Test case: 0 - 5 = -5

if nome == 'principal':
unittest.main()

Explicação do teste de unidade

  1. Declarações de importação:

import unittest: importa o módulo unittest.

from math_functions import add, subtract: importa as funções que queremos testar.

  1. Criando um caso de teste:

class TestMathFunctions(unittest.TestCase): Define uma classe de caso de teste que herda de unittest.TestCase.

  1. Definindo métodos de teste:

Cada método começando com test_ representa um teste separado.

Dentro de cada método de teste, self.assertEqual() verifica se a saída da função corresponde ao valor esperado.

  1. Executando os testes:

if name == 'main': unittest.main(): Esta linha permite que o script execute os testes quando executado diretamente.

Executando os testes

Para executar os testes, basta executar o script test_math_functions.py. Você pode fazer isso na linha de comando:

python test_math_functions.py

Saída

Se todos os testes forem aprovados, você verá um resultado semelhante a este:

..

Executei 2 testes em 0,001s

OK

Isso indica que os métodos test_add e test_subtract foram aprovados com sucesso. Se alguma afirmação falhar, o unittest reportará a falha, mostrando qual teste falhou e por quê.

Conclusão

A estrutura unittest em Python fornece uma maneira simples e eficaz de criar e executar testes de unidade. Ao escrever testes para suas funções, você pode garantir que elas se comportem conforme o esperado e mantenham a alta qualidade do código durante todo o processo de desenvolvimento.

Declaração de lançamento Este artigo é reproduzido em: https://dev.to/mrcaption49/crud-functionity-in-django-19n2?1 Se houver alguma infração, entre em contato com [email protected] para excluí-lo.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3