我想在testing12(bad_order, order) == True
时重新启动第一个for循环的当前迭代。我试图使用continue但它跳过迭代,这不是我想要的。
bad_order = []
order = []
for iteration in range(0, 10):
args = []
print("\n def test%d(self):" % (iteration))
for input in range(num_arguments):
args.append(pick_type())
order = args
if testing12(bad_order, order) == True:
continue
try:
result = target(*args)
code = test_to_string(target, args, result)
except Exception as error:
bad_order = args
code = test_to_string_exc(target, args, error)
答案 0 :(得分:3)
你可以添加一个内部while
循环,它实际上会重复外循环迭代,直到它退出。如果你可以在while测试中输入重复条件,那么你就完成了:
for iteration in range(0, 10):
while some_condition:
...
如果没有,您可以使用while True
循环,在底部放置一个无条件break
,并使用continue
重复:
for iteration in range(0, 10):
while True:
...
if continue_condition:
continue
...
break
答案 1 :(得分:1)
你也可以改变:
for iteration in range(0,10):
到
iteration =0
while iteration < 10 :
并且仅在不需要重复时递增迭代
答案 2 :(得分:0)
你只需要添加一个在迭代结束时中断的无限while循环。
然后您可以根据需要重新启动迭代。
bad_order = []
order = []
for iteration in range(0, 10):
while True: #
args = []
print("\n def test%d(self):" % (iteration))
for input in range(num_arguments):
args.append(pick_type())
order = args
if testing12(bad_order, order) == True:
continue
try:
result = target(*args)
code = test_to_string(target, args, result)
except Exception as error:
bad_order = args
code = test_to_string_exc(target, args, error)
break #