A palavra-chave assert é uma ferramenta de programação que serve para verificar se uma condição é verdadeira em um determinado ponto do seu código. Se a condição for falsa, o assert imediatamente levanta uma exceção AssertionError, parando a execução do programa e mostrando uma mensagem.

Para que serve o assert?

Sintaxe:

assert condicao, "Mensagem de erro (opcional)"

Quando USAR assert (Melhores Práticas):

Quando NÃO USAR assert (CUIDADO!):

Exemplos Práticos:

def calcular_area_retangulo(largura, altura):
    # Pré-condição: Largura e altura devem ser números positivos.
    # Se isso não for verdade, é um erro de quem chamou a função ou um bug.
    assert isinstance(largura, (int, float)) and largura > 0, "Largura deve ser um número positivo."
    assert isinstance(altura, (int, float)) and altura > 0, "Altura deve ser um número positivo."

    area = largura * altura
    # Pós-condição: A área deve ser positiva.
    assert area > 0, "Erro interno: Área calculada não é positiva. Verifique a lógica."
    return area

print("--- Testes de calcular_area_retangulo ---")

try:
    # Cenário 1: Entrada válida (sucesso)
    area1 = calcular_area_retangulo(5, 10)
    print(f"Área do retângulo (5x10): {area1}") # Saída: Área do retângulo (5x10): 50

    # Cenário 2: Erro de tipo (TypeError no assert)
    area2 = calcular_area_retangulo(5, "dez")
    print(f"Área do retângulo (5x'dez'): {area2}")
except AssertionError as e:
    print(f"Erro capturado (TypeError): {e}") # Saída: Erro capturado (TypeError): Altura deve ser um número positivo.

try:
    # Cenário 3: Valor inválido (ValueError no assert)
    area3 = calcular_area_retangulo(5, -2)
    print(f"Área do retângulo (5x-2): {area3}")
except AssertionError as e:
    print(f"Erro capturado (ValueError): {e}") # Saída: Erro capturado (ValueError): Altura deve ser um número positivo.