1
ジェネレータを返すメソッドを "リセット"する方法を教えてください。このメソッドを模倣し、テスト中のメソッドで親クラスを2回使用すると、最初の呼び出しはジェネレータを消費し、2番目の呼び出しはデータを持ちません。以下のサンプルコード。 get_valuesへの2回の呼び出しは、同じ(模擬された)リストを返さなければなりません。pythonモックジェネレータの戻り値をリセットする
import mock
class MyTestClass(object):
def __init__(self, param):
self.param = param
def get_values(self):
return self.param
class MyTestRunner(object):
def __init__(self):
pass
def run(self):
cls = MyTestClass(2)
print list(cls.get_values())
cls = MyTestClass(3)
print list(cls.get_values())
with mock.patch.object(MyTestClass, 'get_values') as mock_class:
mock_class.return_value = ({'a': '10', 'b': '20'}).iteritems()
m = MyTestRunner()
m.run()
は予想:
[('a', '10'), ('b', '20')]
[('a', '10'), ('b', '20')]
実際:
[('a', '10'), ('b', '20')]
[]
ありがとうございました! – jqwha
このPython 3を使いやすくするためには、iteritemsの代わりに 'items'を使わなければならないことに注意してください。また、 'items'もPython 2で動作します。それで、両方のバージョンで使いやすいものになっています。 – idjaw