首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在模拟不起作用时设置属性

在模拟不起作用时设置属性
EN

Stack Overflow用户
提问于 2014-03-14 23:38:25
回答 1查看 181关注 0票数 1

我正在尝试创建一个库(Hammock)调用的模拟,该调用是对具有status_code属性的POST方法的调用。下面是我的测试代码:

代码语言:javascript
复制
def test_send_text(self):
    Hammock.POST = Mock(status_code=201)
    print Hammock.POST.status_code
    self.task.payload = fixtures.text_payload

    self.task.send_text()
    # ········
    Hammock.POST.assert_any_call()

当我打印Hammock.POST.status_code时,我得到了我所期望的-- 201。然而,当我们进入我正在测试的代码时:

代码语言:javascript
复制
response = self.twilio_api('Messages.json').POST(data=self.payload)
print '*' * 10
print response
print response.status_code
if response.status_code == 201:
    self.logger.info('Text message successfully sent.')
else:
    raise NotificationDispatchError('Twilio request failed. {}. {}'.format(response.status_code,
        response.content))

事情变得很奇怪。实际上,响应是一个模拟对象。但是response.status_code是一个对象:<Mock name='mock().status_code' id='4374061968'>,而不是像我在测试中使用它时那样是201。为什么我的模拟属性在测试代码中起作用,而不是在我正在测试的代码中起作用?

EN

回答 1

Stack Overflow用户

发布于 2014-03-17 15:29:45

问题是POST().status_code与POST.status_code。POST.status_code确实会模拟201,但是从== ()返回的对象是一个全新的模拟对象。

您要查找的内容大致是

代码语言:javascript
复制
Hammock.POST = Mock()
Hammock.POST.return_value = Mock(status_code=201)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22409537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档