我有以下装饰应该包装在try/except块中的测试用例函数的实现和打印日志如果发生异常。装饰器在鼻子测试案例,产生
def print_log(test_case):
@wraps(test_case)
def run_test(self):
try:
test_case(self)
except:
Test_Loop.failure_teardown(self)
raise
return run_test
然而,这似乎并没有对我的测试情形之一的工作,调用产量发电机
请多多包涵,因为这是一个基本的例子:
class Test_Loop:
# ton of implementation here (e.g. initialization, etc)
def runIt(self, name, ip, port):
# code here
@print_log
def test_log_looper(self):
for l in self.links:
# initialize variables seen below and other stuff
for n in names:
# do stuff
for i in ips:
# do stuff
for p in ports:
yield self.runIt, l, n, i, p
从调试,当应用装饰器时,它似乎甚至不会进入第一个循环。我究竟做错了什么?
1.你从来没有真正返回从包装调用'test_case'的结果。 2.你实际上并不使用封装器中的发生器。 – jonrsharpe
从'print_log'调用'test_case'只返回生成器;你并没有重复它。 – chepner