我正在尝试编写一个mox测试,它读取电子表格(4列),获取提要,并将特定列(2列)写入CSV文件。我正在尝试通过获取列表提要的第一步,我的代码如下:
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)当我运行此命令时,我得到以下错误:
ExpectedMethodCallsError: Verify: Expected methods never called:
0. SpreadsheetsService.GetListFeed('fake_spreadsheet_key', 'default') -> [{'str_col': 'col13'}]你知道如何修复这个错误吗?
发布于 2012-10-06 07:53:55
您需要实际触发将调用GetListFeed的函数。直到你调用self.mox.ReplayAll()之前,你只是在“记录”当它进入重放模式后,mox应该看到的东西。将mox置于重放模式后,您需要实际调用任何调用GetListFeed的函数。在您的例子中,它看起来像是testGetFeed或它的父函数。
此外,因为您在类定义中派生了mox.MoxTestBase()的子类,所以不需要在末尾调用self.mox.Verify() -根据docs,
您可以使测试用例成为mox.MoxTestBase的子类;这将在self.mox中自动创建模拟对象工厂,并在每次测试结束时自动验证所有模拟对象和取消设置存根。
发布于 2013-05-09 00:17:29
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()https://stackoverflow.com/questions/11953448
复制相似问题