Функция AssertIs() модуля unittest в Python

Содержание

Что такое метод AssertIs() в Python?

Функция AssertIs() модуля unittest в Python позволяет вам проверить, являются ли два объекта одинаковыми. Ниже показан синтаксис метода AssertIs():

assertIs(first, second, msg=None)

Если первая и вторая ссылки ссылаются на один и тот же объект, тест будет пройден. В противном случае — потерпит неудачу.

msg не является обязательным. Он отображается в результатах теста на случай, если тест не пройден.

Технически, метод AssertIs() использует оператор is:

first is second

Пример с AssertIs() в Python

  • Сначала создайте одноэлементный класс Logger в модуле logger.py:
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}')

Синглтон — это шаблон проектирования, который ограничивает создание экземпляра класса одним экземпляром. Другими словами, у вас будет один и тот же объект Logger независимо от того, сколько раз вы вызываете конструктор Logger().

  • Во-вторых, создайте класс TestLogger, который тестирует класс Logger:
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)

В классе TestLogger:

  • Сначала создайте новый экземпляр класса Logger в методе setUp() и присвойте его переменной экземпляра self.logger.
  • Во-вторых, создайте новый экземпляр класса Logger и используйте метод AssertIs(), чтобы проверить, совпадают ли два экземпляра.

Если вы запустите тест:

python -m unittest -v

вы получите следующий результат:

test_singleton(test_logger.TestLogger) ... ok

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

OK

Тест пройден.

Метод AssertIsNot() в Python

AssertIsNot() проверяет, не совпадает ли первый объект со вторым:

assertIsNot(first, second, msg=None)

Например:

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)

Запустите тест:

python -m unittest -v

Выход:

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

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

OK

В этом примере мы используем метод AssertIsNot(), чтобы проверить, ссылаются ли две целочисленные переменные на разные объекты. Поскольку их значения различны, они ссылаются на разные объекты.

Во втором тестовом примере мы используем метод AssertIs(), чтобы проверить, ссылаются ли две целочисленные переменные на один и тот же объект. Поскольку их значения одинаковы, они ссылаются на один и тот же объект.

Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *