Как запустить функцию несколько раз с разными возвращаемыми значениями?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как запустить функцию несколько раз с разными возвращаемыми значениями?

Сообщение Anonymous »

У меня есть функция, которая периодически дает сбой во время автоматической сборки, поэтому я хочу добавить к ней несколько повторных попыток. Функция в основном такая:

Код: Выделить всё

def myfunc():
try:
# do stuff
return 0
except:
return 1
"делать что-то" означает вызов этой функции, которая является оболочкой Python для сторонней библиотеки Rust. Он поглощает любые ошибки и просто возвращает код выхода.
Наш тестовый код также довольно сложен, но на данный момент мне удалось протестировать эту функцию перед запуском инструмента. Здесь я использую приспособление pytest-mock mocker, которое является оболочкой для unittest.mock.
Я пробовал использовать макет с Side_effect=[1, 1, 0], который работает нормально, но мне нужно, чтобы он действительно «делал что-то» с третьей (успешной) попытки.

Код: Выделить всё

    # TODO actually run the function on the 3rd attempt
mock_bdlc = mocker.MagicMock(
spec=WhiteboxTools.breach_depressions_least_cost, side_effect=[1, 1, 0]
)
mocker.patch("whitebox.WhiteboxTools.breach_depressions_least_cost", mock_bdlc)
Это дает мне нужные коды выхода, но мне нужно запустить инструмент «белого ящика», чтобы получить ожидаемые результаты. Ничего страшного, если функция запускается каждый раз, она просто перезапишет выходные данные при втором и третьем запусках.
Все, что мне до сих пор удавалось сделать, это либо издеваться над функцией и возвращать разные значения. коды выхода или просто запустите исходную функцию. Я не могу понять, как сделать и то, и другое.

Подробнее здесь: https://stackoverflow.com/questions/785 ... urn-values
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»