web-dev-qa-db-fra.com

setUpClass () manque 1 argument positionnel requis: 'cls'

J'ai essayé d'utiliser la méthode setUpClass() pour la première fois de ma vie et j'ai écrit:

class TestDownload(unittest.TestCase):

    def setUpClass(cls):
        config.fs = True

et a obtenu:

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'

Qu'est-ce que cela signifie et comment le satisfaire?

17
Dims

Vous devez mettre un décorateur @classmethod Avant def setUpClass(cls).

class TestDownload(unittest.TestCase):

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

Les documents setupClass sont ici et classmethod documents ici .

Ce qui se passe, c'est que dans suite.py ligne 16 le setUpClass est appelé sur la classe (pas une instance) comme une fonction simple (par opposition à une méthode liée). Aucun argument n'est passé silencieusement à setUpClass, d'où le message d'erreur.

En ajoutant le décorateur @classmethod, Vous dites que lorsque TestDownload.setupClass() est appelée, le premier argument est la classe TestDownload elle-même.

26
Jacques Gaudin

L'ajout de @classmethod avant setUp et tearDown résoudra le problème. @classmethod est lié à la classe.

class LoginTest(unittest.TestCase):

   @classmethod
   def setUpClass(cls):

   **Your code**

   @classmethod
   def tearDownClass(self):
1
Atul