Summary: in this tutorial, you’ll learn how to use the Python assertIs()
to test if two objects are the same.
Introduction to Python assertIs() method
The
allows you to test if two objects are the same. The following shows the syntax of the assertIs()
method:assertIs()
assertIs(first, second, msg=None)
Code language: Python (python)
If the first
and second
reference the same object, the test will pass. Otherwise, it’ll fail.
The msg
is optional. It’s displayed in the test result in case the test fails.
Technically, the assertIs()
method uses the is
operator:
first is second
Python assertIs() method example
First, create a Logger
singleton class in the logger.py
module:
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}')
Code language: Python (python)
The singleton is a design pattern that limits the instantiation of a class to a single instance. In other words, you’ll have the same Logger
object regardless of how many times you call the Logger()
constructor.
Second, create a TestLogger
class that tests the Logger
class:
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)
Code language: Python (python)
In the TestLogger
class:
- First, create a new instance of the
Logger
class in thesetUp()
method and assign it to theself.logger
instance variable. - Second, create a new instance of the Logger class and use the
assertIs()
method to check if two instances are the same.
If you run the test:
python -m unittest -v
Code language: Python (python)
you’ll get the following output:
test_singleton (test_logger.TestLogger) ... ok
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
Code language: plaintext (plaintext)
The test passed.
Python assertIsNot() method
The assertIsNot()
tests if the first object is not the same as the second one:
assertIsNot(first, second, msg=None)
Code language: Python (python)
For example:
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)
Code language: Python (python)
Run the test:
python -m unittest -v
Code language: Python (python)
Output:
test_integer_different_value (test_integer.TestInteger) ... ok
test_integer_same_value (test_integer.TestInteger) ... ok
----------------------------------------------------------------------
Ran 2 tests in 0.001s
OK
Code language: plaintext (plaintext)
In this example, we use the assertIsNot()
method to test if two integer variables reference different objects. Since their values are different, they reference different objects.
In the second test case, we use the assertIs()
method to test if two integer variables reference the same object. Because their values are the same, they reference the same object.
Summary
- Use the
assertIs()
method to test if two objects are the same. - Use the
assertIsNot()
method to test if two variables reference different objects.