我正在尝试编写一个读取电子表格(4列)的mox测试,获取Feed并将特定列(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'}]
知道如何修复此错误吗?
答案 0 :(得分:3)
您需要实际触发调用GetListFeed的函数。直到您调用self.mox.ReplayAll()
为止,您只是“记录”mox在进入重放模式后应该看到的内容。将mox置于重放模式后,您需要实际调用调用GetListFeed
的函数。在您的情况下,它似乎是testGetFeed
或其父函数。
另外,因为您在类定义中继承了mox.MoxTestBase()
,所以不需要在docs处按self.mox.Verify()
调用{{1}},
你可以让你的测试用例成为mox.MoxTestBase的子类;这将自动在self.mox中创建一个模拟对象工厂,并将在每次测试结束时自动验证所有模拟对象和未设置的存根。
答案 1 :(得分:1)
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()