1
我有一點麻煩doctest
和協程...蟒蛇文檔測試與協程
def coroutine(func):
def start(*args, **kwargs):
cr=func(*args, **kwargs)
cr.next()
return cr
start.__name__=func.__name__
return start
@coroutine
def leader_tracking():
"""
Tracks 'leader' status - only returns transitions
>>> lt=leader_tracking()
>>> print lt.send(False)
>>> print lt.send(False)
"""
last_status=False
result=("nop", None)
while True:
status=(yield result)
if status!=last_status:
direction="up" if last_status==False else "down"
last_status=status
result=("tr", direction)
else:
result=("nop", None)
如果我使用通常的文檔測試腳手架:
if __name__=="__main__":
import doctest
doctest.testmod()
doctest
沒有顯示任何東西,而如果我使用更蠻力的方法:
lt=leader_tracking()
print lt.send(True)
print lt.send(False)
print lt.send(False)
print lt.send(True)
print lt.send(True)
print lt.send(True)
print lt.send(True)
print lt.send(False)
我可以看到預期的結果:
('tr', 'up')
('tr', 'down')
('nop', None)
('tr', 'up')
('nop', None)
('nop', None)
('nop', None)
('tr', 'down')
我在做什麼毛病doctest
?
+1:了不起! – jldupont 2012-02-02 11:42:21