2
this questionと似ていますが、そこの回答は私がやっていることには十分ではありません。forループの模擬イテレータをリセットするには?
私はこのようなメソッドをテストしようとしている:
import mock
def stack_overflow_desired_output():
print_a_few_times(['upvote', 'this', 'question!'])
def stack_overflow_mocked():
the_mock = mock.Mock()
the_mock.__iter__ = mock.Mock(return_value=iter(["upvote", "this", "question"]))
print_a_few_times(the_mock)
def print_a_few_times(fancy_object):
for x in [1, 2, 3]:
for y in fancy_object:
print("{}.{}".format(x, y))
私はこの取得stack_overflow_desired_output()
を呼び出すとき:
1.upvote
1.this
1.question!
2.upvote
2.this
2.question!
3.upvote
3.this
3.question!
しかし、私はstack_overflow_mocked()
を呼び出すときに、私はこれだけゲット:
1.upvote
1.this
1.question!
イテレータは、その時点で使い果たされたときにそれ自体をリセットする方法はありますか? forループの終わり? print_a_few_times
の内部にリセットを置くと、機能、は侵襲的になります。
これを行いました。あなたは揺れる – TinyTheBrontosaurus