【问题标题】:setUpClass() missing 1 required positional argument: 'cls'setUpClass() 缺少 1 个必需的位置参数:'cls'
【发布时间】:2018-09-14 01:31:04
【问题描述】:

我有生以来第一次尝试使用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'

这是什么意思,如何满足?

【问题讨论】:

  • 你是否在def setUpClass(cls): 之前放置了@classmethod 装饰器?

标签: python python-3.x unit-testing


【解决方案1】:

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

class TestDownload(unittest.TestCase):

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

setupClass docs are hereclassmethod docs here

suite.py line 163 中,setUpClass 作为简单函数(而不是绑定方法)在类(不是实例)上被调用。没有参数以静默方式传递给setUpClass,因此出现错误消息。

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

【讨论】:

    【解决方案2】:

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

    class LoginTest(unittest.TestCase):
    
       @classmethod
       def setUpClass(cls):
    
       **Your code**
    
       @classmethod
       def tearDownClass(self):
    

    【讨论】:

    • 这如何补充现有的答案?
    猜你喜欢
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    • 2017-03-27
    • 2019-11-12
    • 2019-12-23
    • 2021-02-01
    相关资源
    最近更新 更多