我有以下python代码要测试
class Foo(object):
def __init__(self):
self.__fb_access_tokens = PropertiesReader('path/to/authentication_details/file')
self.__fb_post_write_path = PropertiesReader('path/to/write_properties/file')
def write_information(self):
contents = compute_file_contents()
write_contents_to_file(self.__fb_post_write_path, contents)
在我的测试用例中,我想模拟self.__fb_post_write_path
。我不能嘲笑PropertiesReader()
,因为它也会影响self.__fb_access_tokens
。在
在python中可以模拟对象的成员变量吗?在
如有任何建议,我们将不胜感激。在
谢谢!在
一旦创建了类的实例,只需为属性设置一个新值。如果选择使用双下划线名称,则必须手动“损坏”属性名称:
考虑改用单下划线。除非您正在编写框架类(其中各种各样的开发人员都会将您的代码子类化),否则您希望避免名称混乱特性。在
如果必须拦截对
^{pr2}$PropertiesReader
的调用,那么无论如何都要模拟PropertiesReader
,但要传递对某些属性的原始未匹配对象的调用。将Mock.side_effect
设置为函数,并根据参数改变行为:返回
mock.DEFAULT
告诉模拟返回到默认行为(例如,生成另一个Mock
实例或生成您设置的return_value
)。在相关问题 更多 >
编程相关推荐