Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python unittest-使用自定义TestSuite调用unittest.main()_Python_Unit Testing_Testing - Fatal编程技术网

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

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

我正在用python进行单元测试。我没有使用任何自动测试发现。我正在手动将
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
参数。