Предупреждение, выданное Python с наследованием TestCase - «Нужно больше значений для распаковки» - PullRequest
0 голосов
/ 08 февраля 2019

В Django unittest , я наследую от пользовательского класса, чтобы предоставить некоторые общие вспомогательные функции для всех TestCases.Затем пользовательский класс наследуется от TestCase (от django.test).Код выглядит так:

class APITest(TestManager):

    def setUp(self):
        self.User, self.api_client = super(APITest, self).setUp()

Диспетчер тестов выглядит следующим образом:

class TestManager(TestCase):
    def setUp(self):
        # do some stuff

При вызове super(APITest, self).setUp() - * 1010 отображается предупреждение * Нужно больше значений для распаковки

Цель также иметь наследование TestManager от TestCase - предоставить ему доступ к методам TestCase assert (чтобы собрать немного больше информации о результатах теста).

Код по-прежнему работает нормально, но это предупреждение заставляет меня беспокоиться, если эта реализация верна или может быть улучшена.Также я не понимаю ошибку, так как вызов super по-прежнему работает и возвращает 2 значения.

ПРИМЕЧАНИЕ. Изначально TestManager не наследовал от TestCase, и предупреждение не отображалось.

Так что это действительно вопрос из двух частей: почему происходит эта ошибка?Есть ли здесь недостаток дизайна, который можно улучшить?

1 Ответ

0 голосов
/ 08 февраля 2019

Если вы хотите сделать общую настройку для ваших тестов, вы можете добавить метод класса к вашему TestManager с именем setUpClass следующим образом:

class TestManager(TestCase):
    @classmethod
    def setUpClass(cls):
        # generic setup here.

class APITest(TestManager):
    def setUp(self):
        # specific (and additional) setup here.

та же логика работает для tearDownи tearDownClass.

Относительно вашего дизайна ...

Просто наследуйте APITest от TestManager:

class APITest(TestManager):
    def setUp(self):
        # do some stuff

В конце концов, это цельTestManager, верно?Сделайте свои функции доступными для других тестов.

Класс APITest будет также иметь методы из TestCase, поскольку TestManager наследуется от него.

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