我有一个装饰器包裹一个从鼻子测试盒内部产生的发生器。对于每次迭代,如果发生异常,我都希望捕获并运行特定的拆解,但它似乎没有按预期运行。
def print_log(test_case):
@wraps(test_case)
def run_test(self):
try:
for _ in test_case(self): pass
except:
Test_Loop.failure_teardown(self)
raise
return run_test
我做错了吗?
答案 0 :(得分:0)
我不确定意外的行为是什么,但也许它正在发生,因为你没有单独尝试每个循环迭代。
也许这会有用吗?
def print_log(test_case):
@wraps(test_case)
def run_test(self):
from six.moves import next
test_iter = iter(test_case(self))
while True:
try:
next(test_iter)
except StopIteration:
break
except Exception:
Test_Loop.failure_teardown(self)
raise
return run_test