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

Python中函数内定义unittest类运行时显示0测试用例如何修复

问题原因
  • unittest默认的测试用例发现机制只会扫描当前模块全局作用域下继承自unittest.TestCase的子类,你的SimpleTest是定义在smg函数内部的局部类,不会被默认加载器识别到,所以找不到测试用例。
  • if __name__ == '__main__'判断和unittest.main()调用的位置错误,你把这部分逻辑写在了SimpleTest类的内部,而不是模块的顶层位置,也会导致测试执行逻辑无法按预期触发。
修复方案

方案1:调整代码结构到全局作用域(推荐)

把测试类、主执行逻辑移到模块顶层,调整后代码如下:

import unittest

def add(x, y):
    return x + y

class SimpleTest(unittest.TestCase):
    def testadd1(self):
        self.assertEquals(add(4, 5), 9)

if __name__ == '__main__':
    unittest.main()

方案2:保留函数内定义的结构,手动加载测试用例

如果确实需要把测试逻辑封装在函数内部,可以手动构造测试套件执行,不需要依赖默认的用例发现机制,调整后代码如下:

import unittest

def smg():
    def add(x, y):
        return x + y

    class SimpleTest(unittest.TestCase):
        def testadd1(self):
            self.assertEquals(add(4, 5), 9)
    
    # 手动构造测试套件并执行
    suite = unittest.TestLoader().loadTestsFromTestCase(SimpleTest)
    unittest.TextTestRunner().run(suite)

if __name__ == '__main__':
    smg()

两种方案执行后都可以正常识别到1条测试用例并运行。

内容的提问来源于stack exchange,提问作者user11578023

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:24:00