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
相关产品推荐
相关产品推荐

