【发布时间】:2016-03-02 15:22:46
【问题描述】:
我有以下装饰器,它应该将测试用例函数的实现包装在 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. 您实际上也不会在包装器内使用生成器。 -
从
print_log调用test_case只是返回生成器;你没有迭代它。