首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行python mox测试时从未调用过的预期方法

运行python mox测试时从未调用过的预期方法
EN

Stack Overflow用户
提问于 2012-08-14 21:34:45
回答 2查看 2.5K关注 0票数 1

我正在尝试编写一个mox测试,它读取电子表格(4列),获取提要,并将特定列(2列)写入CSV文件。我正在尝试通过获取列表提要的第一步,我的代码如下:

代码语言:javascript
复制
class SpreadsheetReader(mox.MoxTestBase):

  def setUp(self):
    mox.MoxTestBase.setUp(self)
    self.mock_gclient = self.mox.CreateMock(
                                            gdata.spreadsheet.service.SpreadsheetsService)
    self.mock_spreadsheet_key = 'fake_spreadsheet_key'
    self.mock_worksheet_id = 'default'
    self.test_data = [{'str_col':'col1', 'str_col':'col2', 'str_col':'col13'}]


  def testGetFeed(self):

    self.mock_gclient.GetListFeed(self.mock_spreadsheet_key,
                                  self.mock_worksheet_id).AndReturn(self.test_data)

    self.mox.ReplayAll()
    self.mox.Verify()


  def tearDown(self):
    mox.MoxTestBase.tearDown(self)

当我运行此命令时,我得到以下错误:

代码语言:javascript
复制
ExpectedMethodCallsError: Verify: Expected methods never called:
  0.  SpreadsheetsService.GetListFeed('fake_spreadsheet_key', 'default') -> [{'str_col': 'col13'}]

你知道如何修复这个错误吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-06 07:53:55

您需要实际触发将调用GetListFeed的函数。直到你调用self.mox.ReplayAll()之前,你只是在“记录”当它进入重放模式后,mox应该看到的东西。将mox置于重放模式后,您需要实际调用任何调用GetListFeed的函数。在您的例子中,它看起来像是testGetFeed或它的父函数。

此外,因为您在类定义中派生了mox.MoxTestBase()的子类,所以不需要在末尾调用self.mox.Verify() -根据docs

您可以使测试用例成为mox.MoxTestBase的子类;这将在self.mox中自动创建模拟对象工厂,并在每次测试结束时自动验证所有模拟对象和取消设置存根。

票数 4
EN

Stack Overflow用户

发布于 2013-05-09 00:17:29

代码语言:javascript
复制
self.mox_gclient = self.mox.CreateMock(gdata.spreadsheet.service.SpreadsheetsService)
self.mox_gclient.StubOutWithMock(ActualClass,"method_to_be_tested").AndReturn(retValue)
self.mox_gclient.VerifyAll()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11953448

复制
相关文章

相似问题

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