Всем привет.
В python и фляжке новичек. Встал вопрос о тестировании. Вот, предположим есть обработчик запроса:
@app.route('/', methods=['GET'])
def show_index():
'''
Отображение главной страницы
'''
users = UserModel().all()
return render_template('index.html', users=users)
Хочу написать тест, который просто проверяет код ответа:
client = app.test_client()
def test_show_index():
res = client.get('/')
assert res.status_code == 200
Но мне не нравится, что под капотом данный тест делает реальный запрос к базе, так как в обработчике запроса вызывается модельный метод: UserModel().all()
Пытаюсь замокать данный метод:
client = app.test_client()
@pytest.fixture
def mock_user():
return Mock(spec=UserModel)
def test_show_index(mock_user):
mock_user.all.return_value = [{"id": 1, "username": "Test User"}]
res = client.get('/')
assert res.status_code == 200
Но данное мокирование не работает. Под капотом все также - реальный запрос к БД.
Подскажите, как правильно мокать такие вещи? Какие best-practices ксть на этот случай?