如何使用一个shell命令运行所有测试?
如何使用一个shell命令运行所有测试?
假设我有几个模块,其中包含从unittest.TestCase
派生的测试用例。所有这些模块都位于一个名为test
的包中:\n
test/ test_case1.py test_case2.py test_case3.py
\n我想用一个Shell命令运行test
中所有模块中的所有测试。为了做到这一点,我添加了一个新模块test_all.py
,它创建了一个包含所有测试用例的TestSuite
,并定义了main
函数:\n
def make_suite(): ... # 逐个显式添加测试用例 if __name__ == "__main__": suite = make_suite() unittest.TextTestRunner().run(suite)
\n现在我想知道是否有一种方法可以在不创建TestSuite
的情况下运行test
中的所有测试用例。
问题出现的原因是需要一次性运行所有的测试用例,但是每次都需要手动执行python命令来运行每个测试用例文件。
解决方法是使用一个简单的shell命令来运行所有的测试用例。可以使用for循环和通配符来遍历所有的测试用例文件,并使用python命令来执行每个文件。
具体的解决方法如下:
for f in ./test/test_case*.py; do python $f; done
这段代码中,`for f in ./test/test_case*.py` 部分是一个for循环,它会遍历所有以`./test/test_case`开头并以`.py`结尾的文件。`$f`表示当前遍历到的文件名。
在循环体中,使用`python $f`命令来执行每个测试用例文件。`$f`会被替换为当前遍历到的文件名,从而实现执行所有测试用例的目的。
通过这个简单的shell命令,我们可以一次性运行所有的测试用例,提高测试效率。
在Python 2.7及以上版本中,可以通过以下方式来运行所有测试:
python -m unittest discover <test_directory>
当然,所有的测试目录都必须包含一个__init__.py
文件。
你也可以使用像nose这样的工具来运行你的测试。
参见:
非常感谢。使用discover
的解决方案可能是我需要的。
很好。如果能够奏效,希望你能接受这个答案。