sys.stdin的样机?

时间:2012-06-20 11:29:32

标签: python unit-testing stdin mockups

假设您要为这样的函数编写unittest

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

通常像这样使用:

test_me(sys.stdin)

现在,在您的unittest中,您不想使用sys.stdin,而是一个模仿sys.stdin行为的对象,该对象应完全由您控制。通过这种方式,您可以按原样测试功能,并且可以插入您喜欢的任何伪输入。你需要创建什么样的对象?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

尝试StringIO和/或cStringIO模块。