Pular para o conteúdo principal
InicioTutoriaisPython

Como usar a instrução assert em Python

A implementação da instrução assert em Python é simples: usamos assert para testar condições e exibir uma mensagem se a condição for falsa.
Actualizado jun. de 2024  · 6 min leer

A instrução assert na programação em Python é uma ferramenta para estabelecer verdades fundamentais em seu código. Ela funciona capacitando os desenvolvedores a validar as suposições no código. Neste tutorial, dominaremos a instrução assert do Python, incluindo sua sintaxe, uso e aplicações na depuração e detecção de erros. Ao dominar a instrução assert do Python, estaremos mais perto de nos tornarmos um programador Python especialista. 

A resposta curta: como escrever asserções em Python 

A sintaxe da instrução assert é simples:

assert condition, message

Aqui, condition se refere à expressão que está sendo testada, enquanto message é uma mensagem de erro opcional que aparece se a asserção falhar.

Aqui vão algumas asserções que você pode testar em seu código Python para pegar o jeito. No primeiro caso, a expressão 3<4>5 é logicamente incorreta, por isso o Python gera um AssertionError com a mensagem que apresentamos: "Math does not work that way." (Não é assim que a matemática funciona). No segundo caso, a expressão 0==0 é uma tautologia, portanto nunca vemos a mensagem "This shouldn't throw an error." (Isso não deveria gerar um erro.) 

assert 3<4>5, "Math does not work that way."
assert 0==0, "This shouldn't throw an error."

Visão geral da instrução assert do Python

Agora vamos dar uma olhada mais de perto na instrução assert do Python, incluindo como e por que é usada. Ao final deste tutorial, você será um especialista em como usar a instrução assert em Python. 

O que são asserções em Python?

As asserções na programação, de forma mais geral, são construções usadas para verificar a veracidade das condições na base de código. Em outras palavras, são verdades que o programa deve cumprir, caso contrário, será gerado um erro. Ao usar a palavra "assert", o Python implementa essas asserções de programação com uma sintaxe muito literal: a instrução assert nos permite criar essas asserções.

Quando usar asserções em Python

As asserções são muito úteis para depuração, validação de suposições e garantia de que o código se comporte conforme o esperado em determinadas condições. Elas permitem que você diga ao computador o que espera que ele faça e peça que ele pare quando estiver fazendo algo diferente. Isso é útil ao criar um novo programa, incluir um recurso ou atualizar um aplicativo já existente.

As asserções se destacam em cenários em que os desenvolvedores precisam impor pré-condições, pós-condições ou invariantes na base de código. Elas agem como grades de proteção, impedindo que o código avance se determinadas condições forem violadas, ajudando assim na detecção precoce de possíveis bugs.

Ao posicionar estrategicamente as asserções em todo o código, você pode detectar erros mais próximos de sua origem, simplificando a depuração. O programa de Desenvolvedor Python do DataCamp é ótimo para aspirantes a desenvolvedores de todos os níveis praticarem habilidades de programação funcional, pois inclui exercícios com conceitos básicos e mais avançados.

Quando não usar asserções em Python

Embora as asserções sejam de grande valia durante o desenvolvimento, há situações em que seu uso pode ser inadequado.

É importante entender que, quando o código for compilado para produção, as asserções poderão ser desativadas globalmente. Isso significa que você não deve confiar em asserções para lidar com problemas de tempo de execução, como um usuário que insere dados errados. O correto é usá-las para problemas de desenvolvimento, como a identificação de imprecisões lógicas ou matemáticas.

Para tratar erros ou validar dados no código de produção, tente incluir construções de tratamento de exceções para permitir que o código se recupere de erros com eficácia, registre informações pertinentes para fins de depuração e disponibilize um feedback útil aos usuários.

Saiba mais sobre como encontrar erros e corrigi-los em nosso tutorial Tratamento de exceções e erros em Python ou fazendo nosso curso Cientista de Dados Júnior em Python

Erros e equívocos comuns com a instrução assert em Python

Um erro comum ao usar a instrução assert em Python é usar parênteses. É um erro compreensível, pois muitas funções usam parênteses, e incluí-los pode parecer natural. No entanto, tecnicamente a instrução assert não é uma função em Python, portanto usa uma sintaxe especial. Se você usar parênteses, provavelmente receberá avisos de sintaxe e erros lógicos.

Exemplo de um erro devido ao uso de parênteses em uma instrução assert.SyntaxWarning: assertion is always true, perhaps remove parentheses?

Outro erro comum é esquecer a vírgula após a condição. Isso resulta em um erro de sintaxe.

Exemplo de um erro devido à falta de vírgula em uma instrução assert.SyntaxError: invalid syntax

A exceção AssertionError

Uma exceção AssertionError é gerada sempre que os termos de uma afirmação são violados. Esse erro interrompe a execução do programa; qualquer mensagem de erro opcional que você definir será exibida. Como as asserções são usadas principalmente para testar o código durante o desenvolvimento, se você receber uma mensagem de exceção AssertionError do Python, geralmente deve levá-la a sério. Isso pode indicar uma falha fatal no código.

Aplicações práticas

Uma instrução assert pode ser usada em muitas aplicações práticas em Python. Nosso curso interativo Como Escrever Funções em Python apresenta muitos exercícios que vão ajudar você a dominar esses conceitos. Veja alguns exemplos. 

Uso de assert em uma função

Uma maneira útil de usar asserções é inseri-las em funções. Isso pode ajudar a garantir que as funções se comportem como pretendido.

def divide(a, b):
assert b != 0, "Division by zero!"
return a / b

# Test cases
print(divide(10, 2))  # Output: 5.0
print(divide(8, 0))   # AssertionError: Division by zero!

Uso do assert com o unittest

O teste do código é uma etapa essencial do processo de desenvolvimento. O Unittest é uma biblioteca criada para ajudá-lo a testar o código de forma eficiente e, para isso, utiliza instruções assert. Essa é a maneira mais frequente que utilizo instruções assert. Veja um exemplo que você encontra em nosso curso Introdução a Testes em Python

import unittest

class TestMathFunctions(unittest.TestCase):
    def test_addition(self):
        self.assertEqual(2 + 2, 4)

    def test_subtraction(self):
        self.assertEqual(5 - 3, 2)

    def test_division(self):
        self.assertRaises(ZeroDivisionError, divide, 10, 0)

if __name__ == '__main__':
    unittest.main()

Conclusão

A instrução assert do Python é uma ferramenta essencial para depurar e verificar condições no código durante o desenvolvimento. Embora seja simples e eficaz para testar suposições, não deve ser usado na produção devido à sua desativação no código compilado. Em vez disso, o tratamento de exceções deve ser usado para um gerenciamento robusto de erros. 

Vale a pena ler nosso tutorial Práticas recomendadas e diretrizes de codificação como recurso para esclarecer dúvidas.

Temas

Aprenda com o DataCamp

Certificação disponível

Course

Como Escrever Códigos Eficientes em Python

4 hr
120K
Aprenda a escrever códigos eficientes que sejam executados rapidamente e aloque recursos com habilidade para evitar sobrecarga desnecessária.
See DetailsRight Arrow
Start Course
Ver maisRight Arrow