Как использовать pytest и unitest.mock для внедрения ошибок и последующего восстановления

Я работаю над приложением Python, которое обрабатывает задачи из очереди. Очередь повторно отправит задачу, если она неожиданно завершится неудачно (т. е. сбой машины). Мои задачи по своей природе не являются идемпотентными, поэтому мне пришлось написать дополнительный код для правильной обработки повторной передачи, и я хотел бы иметь возможность проверять сбои в определенных местах моего кода. Поскольку я хочу убедиться, что моя задача может быть правильно восстановлена, я хотел бы, чтобы эти сбои возникали только при первой попытке, а затем удавались при последующих попытках.

Моя существующая среда тестирования использует pytest, поэтому я подумал, что unittest.mock объединен с фикстурами pytest может быть отличным способом включить такой тест. Мне интересно, есть ли у кого-нибудь опыт работы с такого рода задачами и может ли он дать какие-либо советы о том, как лучше всего создать эту серию тестов. В этой записи stackoverflow я увидел рекомендацию о том, что pytest.mock должен использовать yield внутри фикстур, но я понимаю, что могу предоставить только один результат, поэтому я не уверен, как обеспечить другое поведение для последующих этапов тестирования. Существуют ли какие-либо передовые методы, которым я должен следовать?


person njriasan    schedule 13.01.2021    source источник