是否可能运行所有单元测试?
在上述内容中,提到了一个问题:"Is it possible to run all unit test?"。这个问题的出现的原因是希望找到一种方法来运行所有的单元测试。为了解决这个问题,可以使用TestLoader来加载指定的测试或模块,或者加载给定目录下的所有测试。此外,可以使用TestSuite实例来处理一些有用的例子。
编辑(EDIT)部分提供了一个示例代码,通常在test.py文件中使用。这段代码的功能有两个:
1. 如果没有提供-t标志(tests),则在目录中查找并加载所有的测试。
2. 如果提供了-t标志(tests),则逐个加载请求的测试。
代码示例:
if not popts.tests: suite = unittest.TestLoader().discover(os.path.dirname(__file__)+'/tests') #print(suite._tests) # Print outline lg.info(' * Going for Interactive net tests = '+str(not tvars.NOINTERACTIVE)) # Run unittest.TextTestRunner(verbosity=popts.verbosity).run(suite) else: lg.info(' * Running specific tests') suite = unittest.TestSuite() # Load standard tests for t in popts.tests: test = unittest.TestLoader().loadTestsFromName("tests."+t) suite.addTest(test) # Run unittest.TextTestRunner(verbosity=popts.verbosity).run(suite)
这段代码的功能是:
1. 如果没有提供-t标志(tests),则在目录中找到并加载所有的测试。
2. 如果提供了-t标志(tests),则逐个加载请求的测试。
通过使用这个代码,可以实现运行所有的单元测试的目的。
有时候我们需要运行所有的单元测试,那么我们可以通过创建一个TestSuite来实现。在TestSuite的if __name__ == '__main__'块中,我们可以运行所有的测试。具体的代码如下:
import unittest def create_suite(): test_suite = unittest.TestSuite() test_suite.addTest(fooTest()) test_suite.addTest(barTest()) return test_suite if __name__ == '__main__': suite = create_suite() runner=unittest.TextTestRunner() runner.run(suite)
如果不想手动创建测试用例,可以参考stackoverflow上的一个问题/答案,该答案动态创建测试用例,或者使用unittest模块的一些功能,比如测试发现功能和命令行选项。
以上就是解决该问题的方法。通过创建一个TestSuite,并在if __name__ == '__main__'块中运行所有的测试用例,我们可以运行所有的单元测试。如果不想手动创建测试用例,可以动态创建测试用例,或者使用unittest模块的其他功能来完成这个任务。
这是一个关于在Python中运行所有单元测试的问题。问题的出现的原因是用户想要一次性运行所有的单元测试,而不是逐个运行每个单元测试。解决方法是使用Python内置的unittest模块,并在项目的根目录下运行命令"python -m unittest discover",其中"module_name"可以替换为具体的模块名称。对于上述具体的示例,只需运行命令"python -m unittest discover ."即可。用户可以参考Python官方文档中关于unittest模块的说明(链接:https://docs.python.org/2/library/unittest.html)。这是最好、最简洁的方法。