TypeError: setUpClass()缺失必需参数'cls'的原因及解决方法
解决unittest中setUpClass()的TypeError问题
嘿,我来帮你拆解这个问题:
首先看你遇到的错误:
TypeError: setUpClass() missing 1 required positional argument: 'cls'
这个错误的核心原因是:你把setUpClass定义成了普通的实例方法,但unittest框架要求它必须是类方法。
咱们看你的代码:
class TestDownload(unittest.TestCase): def setUpClass(cls): config.fs = True
这里的setUpClass用def直接定义,本质是实例方法,但unittest在调用这个方法的时候,是会把测试类本身作为第一个参数传递进去的——因为它默认这是个类方法。但你的方法没标记成类方法,框架不会自动注入cls参数,所以就报错说缺这个参数了。
修复方法超简单,加个装饰器就行:
import unittest class TestDownload(unittest.TestCase): @classmethod def setUpClass(cls): config.fs = True
给setUpClass加上@classmethod装饰器,告诉Python这是个类方法,这样unittest框架调用它时就会自动把当前测试类作为cls参数传进来,问题就解决了。
顺带提一句,对应的tearDownClass方法(测试类所有用例执行完后运行一次)也需要同样加@classmethod装饰器,别忘啦~
内容的提问来源于stack exchange,提问作者Dims
相关产品推荐
相关产品推荐

