提问人:Kabira K 提问时间:11/5/2023 更新时间:11/5/2023 访问量:20
如何mock.patch一个生成器/有产量的类方法
How to mock.patch a class method which is a generator/has yield
问:
如何修补生成器类方法。例如,在下面的课堂上,我们将如何修补get_changed_diff_patch方法?
class PassiveJsonMixin(JsonMixin):
"""
passive items that do not have id/key
"""
def __init__(self, *args, **kwargs):
JsonMixin.__init__(self, *args, **kwargs)
# self.build_json()
pass
def get_changed_diff_patch(self, parent_hidden=False):
print ("From PassiveJsonMixin: get_changed_diff_patch")
return
yield
通常的方法
patch.object(mymod.PassiveJsonMixin, 'get_changed_diff_patch',wrapper(mymod.PassiveJsonMixin.get_changed_diff_patch) )
似乎不起作用。
答:
0赞
Kabira K
11/5/2023
#1
通过使用 with 上下文来扩展一下答案:
from unittest import mock
class MyClass:
def some_generator(self):
for i in range(5):
yield i
def method_using_generator(self):
values = []
for value in self.some_generator():
values.append(value)
return values
with mock.patch.object(MyClass, 'some_generator', return_value=[10, 20, 30, 40, 50]):
my_instance = MyClass()
result = my_instance.method_using_generator()
print (result)
下一个:什么决定了发电机的尺寸?
评论