Python unittest - 使用自定义 TestSuite 调用 unittest.main()

5 投票
2 回答
3989 浏览
提问于 2025-04-16 04:28

我正在用Python写单元测试。现在我没有使用任何自动测试发现的功能,而是手动把TestCases组合成一个TestSuite

我可以用unittest.TextTestRunner().run(suite)来运行这些测试,但我想用unittest.main()来运行,这样我就可以使用命令行选项,比如-v或者--failfast。文档上说unittest.main()可以接受一个TestRunner的选项。

那么,我该如何把我的TestSuite转换成一个TestRunner呢?

2 个回答

-4

除了确保你的单元测试模块里有这个以外,别做其他的事情。

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

http://docs.python.org/library/unittest.html#unittest.main

来自文档的内容...

unittest.main( failfast=True, testRunner=unittest.TextTestRunner )
2

这段内容是关于如何使用unittest.main来运行测试集的一个问题的重复回答。

你不能把一个TestSuite直接传给main,看看unittest.main.TestProgram的构造函数(其实unittest.main就是这个东西)以及这个类是怎么工作的。它的第一个参数如果有的话,是模块名,而不是测试集。

main()实际上是从sys.argv获取参数的,因为它本来是设计用来从命令行运行的,而不是在程序内部调用。这样做只是为了方便,大家都这么做。

撰写回答