是否可能运行所有单元测试?

11 浏览
0 Comments

是否可能运行所有单元测试?

我有两个模块,分别有两个不同的类和它们对应的测试类。\n在任何测试和源模块文件中,我删除了if __name__ == \"__main__\":,因为这样增加了一致性并遵循面向对象的思想。\n就像在Java单元测试中一样,我想要创建一个模块来运行所有的单元测试。例如,\n我在搜索引擎中搜索了一下,但没有找到任何教程或示例。这样做可能吗?为什么?或者如何做?\n注意:我在Windows机器上使用eclipse和pydev发行版。

0
0 Comments

在上述内容中,提到了一个问题:"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),则逐个加载请求的测试。

通过使用这个代码,可以实现运行所有的单元测试的目的。

0
0 Comments

有时候我们需要运行所有的单元测试,那么我们可以通过创建一个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模块的其他功能来完成这个任务。

0
0 Comments

这是一个关于在Python中运行所有单元测试的问题。问题的出现的原因是用户想要一次性运行所有的单元测试,而不是逐个运行每个单元测试。解决方法是使用Python内置的unittest模块,并在项目的根目录下运行命令"python -m unittest discover",其中"module_name"可以替换为具体的模块名称。对于上述具体的示例,只需运行命令"python -m unittest discover ."即可。用户可以参考Python官方文档中关于unittest模块的说明(链接:https://docs.python.org/2/library/unittest.html)。这是最好、最简洁的方法。

0