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.stdinあり、そのオブジェクトはあなたが完全に制御する必要があります。このようにして、関数をそのままテストし、好きな偽の入力を挿入できます。そのためには、どのようなオブジェクトを作成する必要がありますか?

4

2 に答える 2

1

試してみてくださいStringIOおよび/またはcStringIOモジュール。

于 2012-06-20T11:40:25.610 に答える
1

この場合、instream引数はジェネレーターとして使用されます。したがって、ジェネレータを実装するだけで十分です。おそらく、関数に行のリストを提供するだけで十分でしょう。

于 2012-06-20T11:35:32.987 に答える