You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python unittest获取Config类属性报TypeError的解决方法

报错根因
  • 继承关系错误:测试类同时继承Config和unittest.TestCase,unittest框架加载用例时会向测试类构造方法传入测试方法名作为参数,但Config的__init__方法仅接收self一个参数,无法处理额外传入的参数,直接触发TypeError: Config.__init__() takes 1 positional argument but 2 were given报错。
  • 调用逻辑错误:Config类中定义的_basedir、_name_project都是实例属性,set_project、属性getter都是实例级别的方法,必须先创建Config类的实例才能调用,直接通过类名访问的写法不符合Python类的实例化调用规则。
修复方案

不需要让测试类继承Config,改用组合的方式在测试前置方法中实例化Config对象即可,修改后的Test.py代码如下:

import unittest
from Config import Config


class Test(unittest.TestCase):
    def setUp(self):
        # 实例化配置类对象
        self.config = Config()
        # 调用配置方法,不传参时项目名默认设为foo
        self.config.set_project()

    def test_000_set_project(self):
        # 访问实例属性输出
        print(f'"{self.config.get_basedir}"')
        print(self.config.get_name_project)

    def tearDown(self):
        pass


if __name__ == '__main__':
    unittest.main()
运行结果

执行上述测试代码后,控制台将输出符合预期的内容:

"C:/Users/example"
foo

说明:如果不需要路径外层的双引号,把print(f'"{self.config.get_basedir}"')改成print(self.config.get_basedir)即可,输出会变为C:/Users/example。

内容的提问来源于stack exchange,提问作者Fabricio Nahuel Rori

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 00:27:23