Python模拟中的模拟属性?

我在Python中使用mock时遇到了相当大的困难:

def method_under_test():
r=请求。post(“http://localhost/post")
print r.ok#prints“<MagicMock name='post().ok'id='11111111'>”
如果r.ok:
返回StartResult()
其他:
引发异常()
类MethodUnderTestTest(TestCase):
def测试下的def测试方法(自):
将补丁('requests.post')作为补丁发布:
已修补的\u post.return\u value.ok=True
结果=试验()下的方法
self.assertEqual(类型(结果)、StartResult、,
“未能返回StartResult。”)

测试实际上返回正确的值,但是r.ok是模拟对象,而不是True。如何在Python的mock库中模拟属性

您需要使用return\u valuePropertyMock

将补丁(’requests.post’)作为补丁发布的

:
类型(打补丁的帖子。返回值)。ok=PropertyMock(返回值=True)

这意味着:在调用requests.post时,在该调用的返回值上,为属性ok设置PropertyMock以返回值True

发表评论