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

Jupyter Notebook单元测试:如何清除历史记录仅显示当前测试结果?

解决Jupyter Notebook单元测试显示旧测试结果的问题

出现这种情况是因为Jupyter内核会保留之前运行代码的内存状态,之前定义的测试类未被清除,unittest.main()会自动发现所有已加载的TestCase子类并执行,导致旧测试结果混入输出。以下是几种可行的解决方法:

方法1:手动指定要运行的测试类(推荐)

不要依赖unittest.main()的自动发现机制,手动构建仅包含当前测试的套件并运行,确保只执行你当前定义的测试:

import unittest

class TestNotebook(unittest.TestCase):
    
    def test_add(self):
        self.assertEqual(add(2, 2), 4)

# 仅加载当前测试类的用例
suite = unittest.TestLoader().loadTestsFromTestCase(TestNotebook)
# 运行测试
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)

方法2:重启Jupyter内核

点击Jupyter界面顶部的「Kernel」→「Restart Kernel」,清空内核内存中保留的旧代码状态,之后重新运行当前的函数定义和测试代码,输出就只会包含当前测试的结果。

方法3:清理unittest的测试注册表

在调用unittest.main()前,清空测试加载器缓存并移除已注册的旧测试类(需明确旧测试类名称),示例如下:

import unittest

# 删除旧测试类(假设旧测试类名为TestOld)
if 'TestOld' in globals():
    del TestOld

class TestNotebook(unittest.TestCase):
    
    def test_add(self):
        self.assertEqual(add(2, 2), 4)

# 清空测试加载器缓存
unittest.TestLoader().clear_cache()
unittest.main(argv=[''], verbosity=2, exit=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 23:14:59