Python unittest-使用自定义TestSuite调用unittest.main()
我正在用python进行单元测试。我没有使用任何自动测试发现。我正在手动将Python unittest-使用自定义TestSuite调用unittest.main(),python,unit-testing,testing,Python,Unit Testing,Testing,我正在用python进行单元测试。我没有使用任何自动测试发现。我正在手动将TestCases组装成TestSuite 我可以用unittest.TextTestRunner().run(suite)运行这些测试,我想用unittest.main()运行它们,这样我就可以使用命令行选项(比如-v/--failfast)。文档中说,unittest.main()可以使用TestRunner选项 如何将我的TestSuite转换为TestRunner?除了确保单元测试模块中有这个之外,什么都不做 if
TestCases
组装成TestSuite
我可以用unittest.TextTestRunner().run(suite)
运行这些测试,我想用unittest.main()
运行它们,这样我就可以使用命令行选项(比如-v
/--failfast
)。文档中说,unittest.main()
可以使用TestRunner选项
如何将我的
TestSuite
转换为TestRunner
?除了确保单元测试模块中有这个之外,什么都不做
if __name__ == '__main__':
unittest.main(failfast=True)
从文档中
unittest.main( failfast=True, testRunner=unittest.TextTestRunner )
接近副本(答案副本并粘贴):
您不能将TestSuite
传递给main,请检查unittest.main.TestProgram
的构造函数(实际上是unittest.main
)以及该类的工作方式。第一个参数是模块名,而不是testsuite
main()
实际上从sys.argv
获取其参数,因为它实际上是从命令行而不是从程序中使用的。为方便起见,这样做很常见。我没有使用unittest.main()的测试自动发现,我只是手工制作了一个测试套件。如果我按照您的建议使用unittest.main,它将不会运行我的测试。我试过了,为什么要用手抓?为什么main不能自动发现您的测试?你的测试超类是什么?你的考试名字是什么?它对我非常有效。你做错了什么?我没有使用autodiscover,因为我是根据已知的函数有效输入生成测试用例的。我正在使用这种方法@Rory:这种方法看起来很愚蠢。为什么不把循环放在runTest
应该放的地方呢?为什么要创建一个复杂的套件,而您可以将复杂性转移到一个测试用例中,只需迭代这些值?@S.Lott查看我在答案中列出的好处。TestSuite和TestRunner彼此无关。套件是测试的集合。运行程序执行一组测试。你不能把一个变成另一个。您可以向运行程序提供测试套件(通常通过unittest.main()
)如何向unittest.main()提供测试套件?或者我如何制作一个TestRunner来运行一个给定的TestSuite(我可以传递给unittest.main()),你只是想传递failfast
给你的TestRunner吗?如果您阅读源代码,testrunner的一个未记录的特性是它接受failfast
参数。