2

假设,你想unittest为这样的函数写 s:

def test_me(instream):
    out = ""
    for line in instream:
       out += foo(line)
    return out

通常这样使用:

test_me(sys.stdin)

现在,在您unittest的 s 中,您不想使用sys.stdin模仿sys.stdins 行为的对象,并且该对象应该由您完全控制。这样,您可以按原样测试该功能,并且可以插入您喜欢的任何假输入。你需要创建什么样的对象来做到这一点?

4

2 回答 2

1

在这种情况下,instream参数用作生成器;实现一个生成器就可以了。可能只提供一个带有行列表的函数就可以了。

于 2012-06-20T11:35:32.987 回答
1

尝试StringIO和/或cStringIO模块。

于 2012-06-20T11:40:25.610 回答