【发布时间】:2017-08-03 20:57:07
【问题描述】:
类似于this question,但其中的答案不足以满足我的工作。
我正在尝试测试这样的方法:
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 循环结束时自行重置?将 reset 放在 print_a_few_times, 函数 as described in the aforementioned question 内部将具有侵入性。
【问题讨论】:
标签: python unit-testing mocking