Как настроить mock так, чтобы он возвращал разные значения при нескольких вызовах
Python
Senior
Без компании
Как настроить mock так, чтобы он возвращал разные значения при нескольких вызовах
Ответы
Для настройки мока с разными возвращаемыми значениями при последовательных вызовах можно использовать `side_effect`. Это может быть список значений или функция, которая будет вызываться при каждом обращении к моку.
```
from unittest.mock import Mock
mock = Mock()
mock.side_effect = [10, 20, 30]
print(mock()) # 10
print(mock()) # 20
print(mock()) # 30
```
Если нужна более сложная логика, можно передать функцию в `side_effect`:
```
def mock_behavior():
return some_dynamic_value
mock.side_effect = mock_behavior
```
При исчерпании списка значений будет вызвано `StopIteration`. Для постоянного циклического поведения можно использовать `itertools.cycle`.