SetUpClass () отсутствует 1 обязательный позиционный аргумент: 'cls'

Я впервые в жизни попробовал воспользоваться методом setUpClass() и написал:

class TestDownload(unittest.TestCase):

    def setUpClass(cls):
        config.fs = True

и получил:

Ran 0 tests in 0.004s

FAILED (errors=1)

Failure
Traceback (most recent call last):
  File "/opt/anaconda3/lib/python3.5/unittest/suite.py", line 163, in _handleClassSetUp
    setUpClass()
TypeError: setUpClass() missing 1 required positional argument: 'cls'

Что это значит и как удовлетворить?

Вы ставили декоратор @classmethod до def setUpClass(cls):?

Jacques Gaudin 04.04.2018 15:07
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
26
1
11 093
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Перед @classmethod нужно поставить декоратор def setUpClass(cls).

class TestDownload(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        config.fs = True

Документы setupClass здесь и classmethod документы здесь.

Что происходит, так это то, что в suite.py строка 163setUpClass вызывается в классе (не экземпляре) как простая функция (в отличие от связанного метода). setUpClass не передает никаких аргументов, отсюда и сообщение об ошибке.

Добавляя декоратор @classmethod, вы говорите, что при вызове TestDownload.setupClass() первым аргументом является сам класс TestDownload.

Добавление @classmethod перед setUp и tearDown решит проблему. @classmethod привязан к классу.

class LoginTest(unittest.TestCase):

   @classmethod
   def setUpClass(cls):

   **Your code**

   @classmethod
   def tearDownClass(self):

Как это дополняет существующий ответ?

Jacques Gaudin 25.10.2020 18:29

Другие вопросы по теме