assertIs() do Python

Resumo : neste tutorial, você aprenderá como usar o Python assertIs()para testar se dois objetos são iguais.

Introdução ao método Python assertIs()

O assertIs()permite testar se dois objetos são iguais. O seguinte mostra a sintaxe do assertIs()método:

assertIs(first, second, msg=None)Linguagem de código:  Python  ( python )

Se firste secondreferenciar o mesmo objeto, o teste será aprovado. Caso contrário, falhará.

O msgé opcional. É exibido no resultado do teste caso o teste falhe.

Tecnicamente, o assertIs()método usa o isoperador:

first is second

Exemplo do método Python assertIs()

Primeiro, crie uma Loggerclasse singleton no logger.pymódulo:

from datetime import datetime


class Logger:
    _instance = None

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super(Logger, cls).__new__(cls)
        return cls._instance

    def log(self, message):
        print(f'{datetime.now().strftime("%Y-%m-%d %H:%M:%S")} {message}')Linguagem de código:  Python  ( python )

O singleton é um padrão de design que limita a instanciação de uma classe a uma única instância. Em outras palavras, você terá o mesmo Loggerobjeto, independentemente de quantas vezes chamar o Logger()construtor.

Segundo, crie uma TestLoggerclasse que teste a Loggerclasse:

import unittest

from logger import Logger


class TestLogger(unittest.TestCase):
    def setUp(self):
        self.logger = Logger()

    def test_singleton(self):
        new_logger = Logger()
        self.assertIs(self.logger, new_logger)Linguagem de código:  Python  ( python )

Na TestLoggeraula:

  • Primeiro, crie uma nova instância da Loggerclasse no setUp()método e atribua-a à self.loggervariável de instância.
  • Segundo, crie uma nova instância da classe Logger e use o assertIs()método para verificar se duas instâncias são iguais.

Se você executar o teste:

python -m unittest -vLinguagem de código:  Python  ( python )

você obterá a seguinte saída:

test_singleton (test_logger.TestLogger) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.000s

OKLinguagem de código:  texto simples  ( texto simples )

O teste passou.

Método Python assertIsNot()

Os assertIsNot()testes se o primeiro objeto não é igual ao segundo:

assertIsNot(first, second, msg=None)Linguagem de código:  Python  ( python )

Por exemplo:

import unittest


class TestInteger(unittest.TestCase):
    def test_integer_different_value(self):
        x = 10
        y = 20
        self.assertIsNot(x, y)

    def test_integer_same_value(self):
        x = 10
        y = 10
        self.assertIs(x, y)Linguagem de código:  Python  ( python )

Execute o teste:

python -m unittest -vLinguagem de código:  Python  ( python )

Saída:

test_integer_different_value (test_integer.TestInteger) ... ok
test_integer_same_value (test_integer.TestInteger) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.001s

OKLinguagem de código:  texto simples  ( texto simples )

Neste exemplo, usamos o assertIsNot()método para testar se duas variáveis ​​inteiras fazem referência a objetos diferentes. Como seus valores são diferentes, eles fazem referência a objetos diferentes.

No segundo caso de teste, usamos o assertIs()método para testar se duas variáveis ​​inteiras fazem referência ao mesmo objeto. Como seus valores são iguais, eles fazem referência ao mesmo objeto.

Resumo

  • Use o assertIs()método para testar se dois objetos são iguais.
  • Use o assertIsNot()método para testar se duas variáveis ​​fazem referência a objetos diferentes.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *