我们可以重复执行单元测试用例可配置的次数吗?
例如,我有一个名为的单元测试脚本Test_MyHardware
,其中包含几个测试用例test_customHardware1
和test_customHardware2
.
有没有办法用 Python 的 unittest 模块重复执行test_customHardware1
200 次和500 次?test_customHardware2
注意:上述案例是简化的。实际上,我们将有 1000 个测试用例。
我们可以重复执行单元测试用例可配置的次数吗?
例如,我有一个名为的单元测试脚本Test_MyHardware
,其中包含几个测试用例test_customHardware1
和test_customHardware2
.
有没有办法用 Python 的 unittest 模块重复执行test_customHardware1
200 次和500 次?test_customHardware2
注意:上述案例是简化的。实际上,我们将有 1000 个测试用例。
虽然unittest 模块对此没有任何选择,但有几种方法可以实现这一点:
您可以使用装饰器来实现此目的:
#!/usr/bin/env python
import unittest
def repeat(times):
def repeatHelper(f):
def callHelper(*args):
for i in range(0, times):
f(*args)
return callHelper
return repeatHelper
class SomeTests(unittest.TestCase):
@repeat(10)
def test_me(self):
print "You will see me 10 times"
if __name__ == '__main__':
unittest.main()
unittest.main()
更好的选择是多次调用exit=False
. 此示例将重复次数作为参数并调用unittest.main
该次数:
parser = argparse.ArgumentParser()
parser.add_argument("-r", "--repeat", dest="repeat", help="repeat tests")
(args, unitargs) = parser.parse_known_args()
unitargs.insert(0, "placeholder") # unittest ignores first arg
# add more arguments to unitargs here
repeat = vars(args)["repeat"]
if repeat == None:
repeat = 1
else:
repeat = int(repeat)
for iteration in range(repeat):
wasSuccessful = unittest.main(exit=False, argv=unitargs).result.wasSuccessful()
if not wasSuccessful:
sys.exit(1)
这允许更大的灵活性,因为它将运行用户请求指定次数的所有测试。
您需要导入:
import unittest
import argparse