4
from mock import MagicMock, call
m = MagicMock()
m.foo()
for i in m:
    print m
m.bar()
print m.mock_calls
[call.foo(), call.__iter__(), call.bar()]

[call.foo(), call.__iter__(), call.bar()] == m.mock_calls
False

モック化されたオブジェクトが一連の呼び出し内で反復されたことをどのようにアサートしますか? 他のものに設定しても同じことが起こり__iter__.return_valueます。

4

4 に答える 4

0

モック オブジェクトが呼び出された場合、そのcalled属性はTrue次のとおりです。

>>> m = MagicMock()
>>> assert m.__iter__.called, "The object was not iterated over"
Traceback (most recent call last):
  File "<string>", line 1, in <fragment>
builtins.AssertionError: The object was not iterated over
>>> for i in m:
...     print(m)
... 
>>> assert m.__iter__.called, "The object was not iterated over"
>>> m.__iter__.called
True

この場合も、(メソッドm.__iter__にアクセスした結果として)「オンデマンド」で作成されたモックです。__iter__

于 2013-04-19T14:11:49.683 に答える