我们可以重复单元测试用例执行可配置的次数吗?
例如,我有一个名为“Test_MyHardware”的单元测试脚本,其中包含几个测试用例test_customHardware1和test_customHardware2。
现在如果我想重复执行test_customHardware1 200次和test_customHardware2 500次,是否有一个在Python unittest模块中实现相同的目标?
注意:上面提到的案例是简化的。在实践中,我们将有1000个测试用例。
答案 0 :(得分:2)
更好的选择是使用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
答案 1 :(得分:1)
虽然unittest module没有选项,但有几种方法可以做到这一点:
您可以使用decorators来实现此目的:
#!/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()