Как вы применяете коллекции (массивы, списки, словари) в тестировании API?

«Как вы применяете коллекции (массивы, списки, словари) в тестировании API?» — вопрос из категории API тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Коллекции активно используются для структурирования тестовых данных, валидации ответов API и управления состоянием в тестах.

Типичные сценарии использования:

  1. Валидация структуры и данных ответа API:

    # Ответ API: {"users": [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]}
    response_data = response.json()
    
    # Проверка, что ответ — список
    assert isinstance(response_data["users"], list)
    
    # Проверка количества элементов
    assert len(response_data["users"]) == 2
    
    # Поиск элемента по условию (используя словарь внутри списка)
    user = next((u for u in response_data["users"] if u["id"] == 1), None)
    assert user["name"] == "Alice"
  2. Параметризация тестов: Передача наборов данных в тест.

    import pytest
    
    @pytest.mark.parametrize("user_id, expected_name", [
        (1, "Alice"),
        (2, "Bob"),
    ])
    def test_get_user_by_id(user_id, expected_name):
        response = api.get_user(user_id)
        assert response.json()["name"] == expected_name
  3. Хранение тестовых данных: Словари для комплексных объектов, списки для наборов сущностей.

    TEST_PRODUCTS = [
        {"id": 101, "name": "Laptop", "price": 999.99},
        {"id": 102, "name": "Mouse", "price": 25.50}
    ]

Ключевые аспекты: При работе с коллекциями важно учитывать порядок элементов (важен для списков, не важен для множеств), уникальность и производительность операций поиска (словари O(1) vs списки O(n)).