类型错误:setUpClass() 缺少 1 个必需的位置参数:'cls'

问题描述 投票:0回答:2

我一生中第一次尝试使用

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'

这是什么意思以及如何满足它?

python python-3.x unit-testing
2个回答
71
投票

你需要在

@classmethod
之前放置一个
def setUpClass(cls)
装饰器。

class TestDownload(unittest.TestCase):

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

setupClass
文档在这里
classmethod
文档在这里

发生的情况是,在 suite.py 第 163 行中,

setUpClass
在类(不是实例)上作为简单函数(而不是绑定方法)被调用。没有参数默默地传递给
setUpClass
,因此会出现错误消息。

通过添加

@classmethod
装饰器,您是说当调用
TestDownload.setupClass()
时,第一个参数是类
TestDownload
本身。


0
投票

在setUp和tearDown之前添加@classmethod将解决该问题。 @classmethod 与类绑定。

class LoginTest(unittest.TestCase):

   @classmethod
   def setUpClass(cls):

   **Your code**

   @classmethod
   def tearDownClass(self):
© www.soinside.com 2019 - 2024. All rights reserved.