Я хотел бы написать тест, который поможет мне определить, не изменился ли API библиотеки, которую я использую, например. после обновления.
Если бы я создал объект «слепой макет», тогда макет всегда будет использовать один метод, и тесты будут проходить, но мое приложение сломается с фактической библиотекой.
Я знаю, что есть способ исправить существующие объекты:
@patch.object(ZipFile, 'namelist')
def test_my_method(self, mocked_zipfile):
который, по крайней мере, проверит, действительно ли метод namelist
существует в исходном объекте, но все же позволяет мне сделать опечатку при насмешке над объектом внутри:
@patch.object(ZipFile, 'namelist')
def test_my_method(self, mocked_zipfile):
mocked_zipfile.namlist.return_value = [ 'one.txt', 'two.txt' ]
Когда я делаю опечатку (namlist
) внутри теста и внутри тестируемого кода, тест просто молча проходит.
Есть ли способ предотвратить исправление обезьяной несуществующих методов издевательства над объектом, кроме как помнить об этом каждый раз, когда я пишу тест (что не лучший способ, когда у вас есть команда, и вы хотите автоматически проверять эти вещи)?