Пример unittest с AbstractClass - PullRequest
       160

Пример unittest с AbstractClass

1 голос
/ 07 августа 2020

Сценарий:

I wi sh для проверки ряда функций в рамках AbstractClass; здесь мне нужно создать несколько модульных тестов (с разными условиями) для функции, которая генерирует атрибуты экземпляра. Затем я хочу убедиться, что эти атрибуты вычисляются / возвращаются правильно.

Теперь я представляю упрощенный пример:

Пример абстрактного класса:

class ExampleAbstractClass():

    def _form_instance_attributes(self,
                                  x,
                                  y):
        self.z = self.x + self.y
        self.x = x + 10
        self.y = y + 20

, который используется в следующем примере кода:

from example_abstract_class import ExampleAbstarctClass as EAC

class ExampleClass(EAC):
    def __init__(self):
        self.x = 0
        self.y = 0
        self.z = 0

    def main(self):
        self._form_instance_attributes(x=5,
                                       y=25)

И unittest следует:

import unittest
from example_abstract_class import ExampleAbstarctClass as EAC

class ExampleTestClass(unittest.TestCase, EAC):
    def test_form_instance_attributes(self):
        self._form_instance_attributes(x=5,
                                       y=25)
        self.assertEqual(self.z, 0)
        self.assertEqual(self.x, 15)
        self.assertEqual(self.y, 45)

    def test_form_instance_attributes(self):
        self._form_instance_attributes(x=10,
                                       y=15)
        self.assertEqual(self.z, 0)
        self.assertEqual(self.x, 20)
        self.assertEqual(self.y, 35)

if __name__ == "__main__":
    unittest.main()

Пример должен возвращать self.z = None во всех случаях. Однако это используется в качестве прокси для демонстрации того, что в этом примере я непреднамеренно назначаю атрибуты (или пытаюсь назначить / прочитать атрибуты) ExampleTestClass.

Вопрос:

Выше выдает ошибку: AttributeError: 'ExampleTestClass' object has no attribute 'x'. Эта ошибка имеет для меня смысл, поскольку сейчас я назначаю атрибуты ExampleTestClass. Однако я не уверен, как тестировать атрибуты в ExampleAbstractClass? Я пытался создать объект, но это возвращает None. Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...