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

Содержание

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

AssertIsInstance() — это функция класса TestCase модуля unittest в Python. Метод AssertIsInstance() проверяет, является ли объект экземпляром класса.

Ниже показан синтаксис метода AssertIsInstance():

assertIsInstance(obj, cls, msg=None)

В этом синтаксисе:

  • obj — объект для проверки.
  • cls — это класс или кортеж классов.
  • msg — необязательная строка, которая будет отображаться, если объект obj не является экземпляром класса cls.

На внутреннем уровне AssertIsInstance() использует функцию isinstance(), чтобы проверить, является ли объект экземпляром класса cls.

Если cls не является классом объекта obj, а является базовым классом класса объекта obj, тест также будет пройден.

Поскольку класс объекта является базовым классом всех классов, метод AssertIsInstance(obj, object) всегда будет проходить.

Примеры с AssertIsInstance() в Python

Давайте создадим модуль shape.py с двумя классами Shape и Square. Класс Shape является базовым классом класса Square:

class Shape:
    pass


class Square(Shape):
    pass

Проще говоря, классы Shape и Square не имеют реализации.

1) Использование функции AssertIsInstance() в Python

В следующем примере метод AssertIsInstance() используется для проверки того, является ли объект Square экземпляром класса Square:

import unittest

from shape import Shape, Square


class TestShape(unittest.TestCase):
    def setUp(self):
        self.square = Square()

    def test_is_instance(self):
        self.assertIsInstance(self.square, Square)

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

python -m unittest -v

Выход:

test_is_instance(test_shape.TestShape) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.001s

OK

Поскольку переменная экземпляра Square является объектом класса Square, тест проходит успешно.

2) Метод AssertIsInstance() с базовым классом

В следующем примере метод AssertIsInstance() используется для проверки того, является ли квадрат экземпляром класса Shape:

import unittest

from shape import Shape, Square


class TestShape(unittest.TestCase):
    def setUp(self):
        self.square = Square()

    def test_is_instance(self):
        self.assertIsInstance(self.square, Square)

    def test_is_instance_of_parent_class(self):
        self.assertIsInstance(self.square, Shape)

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

python -m unittest -v

Выход:

test_is_instance(test_shape.TestShape) ... ok
test_is_instance_of_parent_class(test_shape.TestShape) ... ok

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

OK

3) Проверка того, является ли объект экземпляром класса объекта

В следующем примере метод AssertIsInstance() используется для проверки того, является ли переменная экземпляра Square экземпляром класса объекта:

import unittest

from shape import Shape, Square


class TestShape(unittest.TestCase):
    def setUp(self):
        self.square = Square()

    def test_is_instance(self):
        self.assertIsInstance(self.square, Square)

    def test_is_instance_of_parent_class(self):
        self.assertIsInstance(self.square, Shape)

    def test_is_instance_of_object(self):
        self.assertIsInstance(self.square, object)

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

python -m unittest -v

Выход:

test_is_instance(test_shape.TestShape) ... ok
test_is_instance_of_object(test_shape.TestShape) ... ok
test_is_instance_of_parent_class(test_shape.TestShape) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK

Метод AssertIsNotInstance() в Python

Метод AssertIsNotInstance() является противоположностью метода AssertIsInstance(). Он проверяет, не является ли объект экземпляром класса:

assertNotIsInstance(obj, cls, msg=None)

Например:

import unittest

from shape import Shape, Square


class TestShape(unittest.TestCase):
    def setUp(self):
        self.square = Square()

    def test_is_instance(self):
        self.assertIsInstance(self.square, Square)

    def test_is_instance_of_parent_class(self):
        self.assertIsInstance(self.square, Shape)

    def test_is_instance_of_object(self):
        self.assertIsInstance(self.square, object)

    def test_is_not_instance(self):
        shape = Shape()
        self.assertNotIsInstance(shape, Square)

В этом примере метод test_is_not_instance() использует метод AssertIsNotInstance() для проверки того, является ли объект Shape экземпляром класса Square.

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

python -m unittest -v

Выход:

test_is_instance(test_shape.TestShape) ... ok
test_is_instance_of_object(test_shape.TestShape) ... ok
test_is_instance_of_parent_class(test_shape.TestShape) ... ok
test_is_not_instance(test_shape.TestShape) ... ok

----------------------------------------------------------------------
Ran 4 tests in 0.002s

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

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