У меня возникли проблемы с проверкой того, что метод вызывается с использованием mock
-- в качестве простого примера предположим, что метод os.getcwd
. Я хочу проверить, что моя собственная функция pickle_wdir
вызывает os.getcwd
, как и предполагалось. Однако функция, которую я тестирую, обрабатывает значение, возвращаемое os.getcwd
, что приводит к ошибке.
Вот простой пример для воспроизведения ошибки.
os_ex.py
:
import os
import pickle
def pickle_wdir(filename):
dir = os.getcwd()
with open(filename, 'wb') as handle:
pickle.dump(dir, handle)
test_os_ex.py
:
from unittest import TestCase
from unittest.mock import patch
from os_ex import pickle_wdir
class TestPickleWdir(TestCase):
def test_os_called(self):
fname = 'dir.pickle'
with patch('os_ex.os') as mocked_obj:
pickle_wdir(fname)
mocked_obj.getcwd.assert_called()
Возвращаемое сообщение об ошибке
_pickle.PicklingError: Can't pickle <class 'unittest.mock.MagicMock'>: it's not the same object as unittest.mock.MagicMock
.
Как я могу проверить, что os.getcwd
вызывается, не получая этого PicklingError
?