我在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 value和PropertyMock:
将补丁(’requests.post’)作为补丁发布的
:
类型(打补丁的帖子。返回值)。ok=PropertyMock(返回值=True)
这意味着:在调用requests.post时,在该调用的返回值上,为属性ok设置PropertyMock以返回值True