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
permite testar se dois objetos são iguais. O seguinte mostra a sintaxe do assertIs()
método:assertIs()
assertIs(first, second, msg=None)
Linguagem de código: Python ( python )
Se first
e second
referenciar 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 is
operador:
first is second
Exemplo do método Python assertIs()
Primeiro, crie uma Logger
classe singleton no logger.py
mó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 Logger
objeto, independentemente de quantas vezes chamar o Logger()
construtor.
Segundo, crie uma TestLogger
classe que teste a Logger
classe:
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 TestLogger
aula:
- Primeiro, crie uma nova instância da
Logger
classe nosetUp()
método e atribua-a àself.logger
variá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 -v
Linguagem de código: Python ( python )
você obterá a seguinte saída:
test_singleton (test_logger.TestLogger) ... ok
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
Linguagem 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 -v
Linguagem 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
OK
Linguagem 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.