Работали ли вы с Flask в контексте тестирования?

«Работали ли вы с Flask в контексте тестирования?» — вопрос из категории Python, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, я использовал Flask для создания тестовых стендов и инструментов в рамках QA-процессов. Например, для разработки мок-серверов, которые эмулируют поведение внешних API во время интеграционного или end-to-end тестирования.

Пример мок-сервера для тестирования клиентского приложения:

from flask import Flask, jsonify, request, abort
import time

app = Flask(__name__)

# Эндпоинт, возвращающий тестовые данные с контролируемой задержкой
@app.route('/api/v1/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
    # Имитация задержки сети
    time.sleep(0.1)
    if user_id > 100:
        abort(404, description="User not found")
    return jsonify({"id": user_id, "name": "Test User", "active": True})

# Эндпоинт для проверки отправки данных
@app.route('/api/v1/orders', methods=['POST'])
def create_order():
    data = request.json
    # Валидация входящих данных в рамках теста
    if not data or 'items' not in data:
        return jsonify({"error": "Invalid request"}), 400
    # Логирование запроса для отладки
    print(f"[MOCK SERVER] Received order: {data}")
    return jsonify({"order_id": 12345, "status": "created"}), 201

if __name__ == '__main__':
    app.run(port=5000)

Как это применяется в тестах:

  1. Интеграционное тестирование: Запускаю этот Flask-сервер в фикстуре pytest (например, с помощью subprocess или библиотеки flask-testing), чтобы Selenium- или Playwright-тесты работали с предсказуемым API.
  2. Тестирование клиентских библиотек: Использую такой мок для проверки корректности обработки ответов (успешных, ошибочных) и повторных попыток (retry logic) в коде приложения.
  3. Прототипирование: Быстро создаю прототип API для согласования спецификации с разработчиками до реализации бэкенда.