我想让它在没有缓冲的情况下正常工作:
$ tail -f logfile | python parser.py
以前我用过:
^{pr2}$但现在我实现了https://stackoverflow.com/a/18235323/604515:
while True:
line = sys.stdin.readline()
if not line: break # EOF
parse(line)
问题:我想不出一种不使用sleep()的单元测试我的更改的方法。如何模拟缓冲文件句柄?我可以很容易地模仿stdin,但它永远不会缓冲,所以这不能证明任何东西。在
编辑:我看过StringIO,但它似乎没有普通filehandle那样的缓冲行为。在
首先考虑通过流参数化函数。您可以使用default获取
sys.stdout
。你的方法变成这样:现在您可以通过^{} 框架和
patch
你的parse
方法来模仿你的提要。不幸的是,您不能直接修补sys.stdin.readline()
方法,因为它是一个只读属性。在现在测试中的步骤是:在
^{pr2}$setUp()
中创建stdin的模拟,并在测试中配置它并执行测试。举个例子。在请注意:我修补了类,而不是按文档中的here修补所有方法。在
相关问题 更多 >
编程相关推荐