Я пытаюсь смоделировать метод и сталкиваюсь с проблемами, когда mock
фактически перезаписывает его.
app / tests / test_file.py <- содержит модульный тест, в настоящее время использующий: </p>
@mock.patch('app.method', return_value='foo')
def test(self, thing):
...
do some stuff with app/main/server.py
and get its response, assert a few values
...
assert 'foo' is in return value of some stuff
Пересматриваемый метод вызывается другим файлом, который вызывает server.py.
- app / main / server.py <- с чем на самом деле взаимодействует модульный тест </li>
- app / main / route.py <- где вызываемый метод называется </li>
- app / main / thing.py <- содержит метод для насмешки </li>
Это с Python 2.7, и каждый пакет имеет файл инициализации. Родительская папка (приложение) содержит импорт для каждого класса и метода. Я пробовал app.method
, который не доставляет проблем, но не работает. Я пробовал thing.method
, выдает ошибку. Я пробовал app.main.thing.method
, который ничего не делает.
У меня был успех в этом же наборе тестов, имитирующем объект и один из его методов, но этот объект создается и используется непосредственно в файле server.py. Мне интересно, если это потому, что вызываемый метод так далеко вниз по цепочке. Насмешка для меня довольно волшебна, особенно в Python.