Ожидаемые методы никогда не вызывались при запуске Python mox test
Я пытаюсь написать тест 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'}]
Есть идеи, как исправить эту ошибку?
2 ответа
Вы должны на самом деле вызвать функцию, которая будет вызывать GetListFeed. До точки, которую вы называете self.mox.ReplayAll()
, вы только "записываете" то, что mox должен увидеть, как только он переведен в режим воспроизведения. После того, как вы переведете mox в режим воспроизведения, вам нужно будет вызвать любую функцию GetListFeed
, В вашем случае это, кажется, testGetFeed
или какой бы ни была его родительская функция.
Кроме того, потому что вы подкласс mox.MoxTestBase()
в вашем определении класса, вам не нужно звонить self.mox.Verify()
в конце - согласно документам,
вы можете сделать ваш тестовый пример подклассом mox.MoxTestBase; это автоматически создаст фабрику фиктивных объектов в self.mox и автоматически проверит все фиктивные объекты и незадействованные заглушки в конце каждого теста.
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()