Могу ли я подделывать / издеваться над типом моих макетных объектов в python unittests
В моем коде python я проверяю тип одного из параметров, чтобы убедиться, что он относится к типу, который я ожидаю. Например:
def myfunction(dbConnection): if (type(dbConnection)<>bpgsql.Connection): r['error'] += ' invalid database connection'
Я хочу передать фиктивное соединение для тестирования. Есть ли способ сделать издевательский объект претендовать на правильный тип?
- Как использовать декоратор класса patch в методе unittest.TestCase setUp
- как проверить запись файла с помощью инструкции print в python
- Django: как создать модель динамически только для тестирования
- Макет вызова для записи ()
- Python mock не работает
При всем уважении. Похоже, вы, ребята, не совсем правы!
Я могу использовать утиную печать, как сказано, но есть способ сделать то, что я намеревался сделать в первую очередь:
от http://docs.python.org/dev/library/unittest.mock.html
Макет объектов, которые используют класс или экземпляр как spec или spec_set, могут передавать тесты isintance:
>>> >>> mock = Mock(spec=SomeClass) >>> isinstance(mock, SomeClass) True >>> mock = Mock(spec_set=SomeClass()) >>> isinstance(mock, SomeClass) True
поэтому мой примерный код будет выглядеть так:
m = mock.MagicMock(spec=bpgsql.Connection) isinstance(m, bpgsql.Connection)
это возвращает True
Все, что сказал, я не спорю о строгой проверке типов в python, я говорю, если вам нужно проверить это, вы можете это сделать, и это работает с тестированием и насмешкой.
Это более или менее точно, почему вы не должны применять строгую проверку typecheck! Вы должны полностью удалить эту строку из кода.
Если вы не хотите этого делать, напишите абстрактный базовый класс со свойствами, которые вы хотите иметь ( .connect()
, .cursor()
, …?) И проверьте isinstance
этого.
Также <>
устарел для aaages. Используйте !=
.
- Зашифрованные и безопасные контейнеры докеров
- Flask-WTF / WTForms с Unittest не выполняет проверку, но работает без Unittest
- Как исправить classmethod с autospec в unmocked классе?
- Как высмеять метод импортированного экземпляра
- Разбивается ли TDD на Python?
- насмешливое соединение сокета в Python
- Поиск библиотеки Python для извлечения базы данных
- Python 2.7: ошибка в исключении модульного тестирования с использованием макетной библиотеки
- Использование Python mock для отслеживания вызовов существующего объекта
- mocking subprocess.Popen зависит от стиля импорта
- Каков правильный способ издеваться над индексируемым свойством, которое вызывает исключение при доступе в Python 2.7?