У меня есть модуль под названием com, выполняющий низкоуровневую последовательную связь. Этот модуль используется модулями более высокого уровня для связи. Я пытаюсь добавить соответствующие модульные тесты к этим модулям, но я не хочу, чтобы тесты зависели от последовательной связи. Поэтому мне нужно высмеять модуль «com», чтобы подражать ответам от последовательной связи.Мощный импортированный модуль в Python
вручную Я хотел бы сделать это с простым изменением импорта строки:
import mymodule.com
к чему-то вроде:
import mymodule.mocked_com as com
Но я знаю, что это не очень хороший подход ... так пытается использовать mock.patch украшение, без успеха:
@mock.patch('mymodule.com', returns=(True, 'Test'))
def test_myfunction(capsys):
result, message = controller.myfunction('Something', 'command')
assert(result)
assert(message == 'Test')
out, err = capsys.readouterr()
По какой-то причине у меня никогда не было желаемого результата r eturned from "com", но получите сообщение об ошибке: "ValueError: требуется больше 0 значений для распаковки".
Это то, что я пропустил! Я добавил относительный путь для конкретного метода модуля «com» и ссылался на метод издевательств из модуля макета. Теперь работа хорошая. – balas