Обработка статусов стейт-машины в тестах

Пишу тест, реагирующий на статус, возвращаемый сервисом. Статусы возвращаются поочередно, в строгом порядке. Если сервис отдал последующий статус, он удаляется из списка STATES, и на следующей итерации мы ожидаем, что сервис будет возвращать один из статусов, оставшихся в списке (в start мы уже больше не попадем, его можно убрать).

Все работает, но есть проблема - если сервис очень быстро попал в один из финальных статусов, то мы для каждого промежуточного статуса мы будем делать по лишнему вызову в сервис. Как можно пропустить запуск теста с параметрами validating и progress, если, например, мы сразу попали в report?

@pytest.mark.parametrize("state", [
    "start",
    "validating"
    "progress",
    "report",
    "stop"
])
def test_x(self, state):
    STATES = [
        "start",
        "validating"
        "progress",
        "report",
        "stop"
    ]
    if state in STATES:
        STATES.remove(state)

    response = url.request_to_service().json()
    assert response.get("state") in STATES

Ответы (0 шт):