Функция AssertIsInstance() модуля unittest в Python
- Что такое метод AssertIsInstance() в Python?
- Примеры с AssertIsInstance() в Python
- 1) Использование функции AssertIsInstance() в Python
- 2) Метод AssertIsInstance() с базовым классом
- 3) Проверка того, является ли объект экземпляром класса объекта
- Метод AssertIsNotInstance() в 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