Итак, у меня есть код, который использует gphoto2 для захвата некоторых изображений и т. Д. Я решил, что лучший способ проверить это будет обернуть код gphoto2 чем-то вроде ИСПЫТАНИЯ: затем вернуть подделку данные, а также вещи gphoto2.Тестирование кода на Python, который полагается на аппаратное обеспечение
Кто-нибудь знает, как я этого достиг, я пробовал что-то погулять, но мне не повезло с конкретным определением, выполняются ли модульные тесты или нет.
Я бы предположил, что это будет что-то вроде того, если unittest: но, может быть, есть лучший способ сделать это вообще?
EDIT: Итак, основываясь на комментариях и ответах, я опробовал пакет unittest.mock, он не работал, как я надеялся, позвольте мне объяснить.
Если у меня есть метод A, который вызывает метод захвата изображения (метод B), затем сохраняет изображение и несколько других бит. Мне удалось измотать метод B, чтобы он возвращал либо изображение, либо None, что отлично работает, когда я вызываю метод B специально, но когда я пытаюсь вызвать метод A, он не использует макет метода B, он использует фактический метод B.
Как мне сделать метод A использовать макет метод B?
У вас не должно быть 'if TESTING:' в вашем коде, тогда вы не тестируете фактически запущенный код; используйте * «mocking» *, чтобы создать версию 'gphoto2', которая возвращает ваши фиктивные данные. – jonrsharpe
Код 'gphoto2' будет лишь малой частью того, что вы делаете. Проверьте другую часть. –
@PeterWood мой код использует Django и DRF, чтобы получить запрос API, а затем использовать gphoto2 для захвата изображения, а затем вернуть URL-адрес изображения. Так что, действительно, я бы только тестировал, что если gphoto2 имеет или не вернул изображение, тогда мой API либо вернет URL-адрес, либо 400_BAD_REQUEST ... Поэтому тестирования не так много. Тщательное тестирование сценариев доказало, что все работает отлично, но я должен написать модульные тесты для всего кода, который мы пишем. – Cephlin