如何在 REPL 中用 Python 运行单元测试?

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 的情况下运行它?

che*_*ner 5

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.exitFalse防止sys.exit被调用。

这是有记录的(参见本节末尾),但不容易找到。