mhd*_*mhd 5 python python-unittest
我正在尝试使用标准库中的unittest 在Python 中开发单元测试,并且我想在REPL 中进行尝试。如果我加载了以下代码
import unittest
class TestTrivial(unittest.TestCase):
def test_trivial(self):
self.assertEqual(1 + 1, 2)
self.assertFalse(2 + 2 == 5)
Run Code Online (Sandbox Code Playgroud)
然后我可以在 REPL 中评估以下内容:
unittest.main()
Run Code Online (Sandbox Code Playgroud)
那吐出:
Ran 1 test in 0.000s
OK
Process Python finished
Run Code Online (Sandbox Code Playgroud)
问题是它杀死了 REPL。如何在不退出 REPL 的情况下运行它?
exit=False作为参数传递:
unittest.main(exit=False)
Run Code Online (Sandbox Code Playgroud)
unittest.main实际上不是一个函数;它只是 的另一个名称unittest.main.TestProgram,其__init__方法最终调用一个runTests方法,该方法以这些行结尾:
if self.exit:
sys.exit(not self.result.wasSuccessful())
Run Code Online (Sandbox Code Playgroud)
设置self.exit为False防止sys.exit被调用。
这是有记录的(参见本节末尾),但不容易找到。