如何使用一个shell命令运行所有测试?

13 浏览
0 Comments

如何使用一个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中的所有测试用例。

0
0 Comments

问题出现的原因是需要一次性运行所有的测试用例,但是每次都需要手动执行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命令,我们可以一次性运行所有的测试用例,提高测试效率。

0
0 Comments

在Python 2.7及以上版本中,可以通过以下方式来运行所有测试:

python -m unittest discover <test_directory>

当然,所有的测试目录都必须包含一个__init__.py文件。

你也可以使用像nose这样的工具来运行你的测试。

参见:

非常感谢。使用discover的解决方案可能是我需要的。

很好。如果能够奏效,希望你能接受这个答案。

0