assertIsInstance() do Python

Resumo : neste tutorial, você aprenderá como usar assertIsInstance()o método Python para testar se um objeto é uma instância de uma classe.

Introdução ao método Python assertIsInstance()

O assertIsInstance()é um método da TestCaseclasse do módulo unittest . O assertIsInstance()método testa se um objeto é uma instância de uma classe .

O seguinte mostra a sintaxe do assertIsInstance()método:

assertIsInstance(obj, cls, msg=None)Linguagem de código:  Python  ( python )

Nesta sintaxe:

  • objé o objeto a ser testado.
  • clsé uma classe ou uma tupla de classes.
  • msgé uma string opcional que será exibida se objnão for uma instância da clsclasse.

Internamente, assertIsInstance()usa a isinstance()função para verificar se o objeto é uma instância da clsclasse.

Se the clsnão for a classe do obj, mas a classe base da classe do obj, o teste também será aprovado.

Como a classe do objeto é a classe base de todas as classes, assertIsInstance(obj, object)sempre passará.

Exemplos do método Python assertIsInstance()

Vamos criar um shape.pymódulo com duas classes Shapee Square. A Shapeclasse é a classe base da Squareclasse:

class Shape:
    pass


class Square(Shape):
    passLinguagem de código:  Python  ( python )

Para simplificar, as classes Shapee Squarenão têm implementação.

1) Usando o exemplo do método Python assertIsInstance()

O exemplo a seguir usa o assertIsInstance()método para testar se o squareobjeto é uma instância da Squareclasse:

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)Linguagem de código:  Python  ( python )

Execute o teste:

python -m unittest -vLinguagem de código:  Python  ( python )

Saída:

test_is_instance (test_shape.TestShape) ... ok

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

OKLinguagem de código:  texto simples  ( texto simples )

Como a squarevariável de instância é um objeto da Squareclasse, o teste é aprovado.

2) Usando o método Python assertIsInstance() com um exemplo de classe base

O exemplo a seguir usa o assertIsInstance()método para testar se squareé uma instância da Shapeclasse:

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)Linguagem de código:  Python  ( python )

Execute o teste:

python -m unittest -vLinguagem de código:  Python  ( python )

Saída:

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

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

OKLinguagem de código:  texto simples  ( texto simples )

3) Usando o método Python assertIsInstance() para testar se um objeto é uma instância da classe de objeto

O exemplo a seguir usa assertIsInstance()método para testar se a squarevariável de instância é uma instância da objectclasse:

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)Linguagem de código:  Python  ( python )

Execute o teste:

python -m unittest -vLinguagem de código:  Python  ( python )

Saída:

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

OKLinguagem de código:  texto simples  ( texto simples )

Método Python assertIsNotInstance()

O assertIsNotInstance()é o oposto do assertIsInstance()método. Ele testa se um objeto não é uma instância de uma classe:

assertNotIsInstance(obj, cls, msg=None)Linguagem de código:  Python  ( python )

Por exemplo:

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)Linguagem de código:  Python  ( python )

Neste exemplo, o test_is_not_instance()método usa o assertIsNotInstance()método para testar se um Shapeobjeto é uma instância da Squareclasse.

Execute o teste:

python -m unittest -vLinguagem de código:  Python  ( python )

Saída:

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

OKLinguagem de código:  texto simples  ( texto simples )

Resumo

  • Use o assertIsInstance()método para testar se um objeto é uma instância de uma classe.
  • Use o assertIsNotInstance()método para testar se um objeto não é uma instância de uma classe.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *