Запросить повторное использование в Почтальоне - PullRequest
0 голосов
/ 11 мая 2018

Наша команда хочет автоматизировать тестирование REST API. Прямо сейчас у нас есть коллекция запросов Почтальона, и они заставляют их прыгать через обручи вручную.

Мы можем создать коллекцию / папку для каждого сценария тестирования, но это будет означать массу дублирования. Наш API все еще находится в стадии разработки, и я действительно не хочу исправлять это в двадцати местах после его изменения.

Я бы хотел, чтобы каждый запрос конечной точки был только один раз в коллекции, и какая-то независимая логика могла бы выполнять их в произвольном порядке. Я знаю, что Почтальон не поддерживает повторное использование запросов в чистом виде, поэтому я ищу хотя бы хакерский способ сделать это.

1 Ответ

0 голосов
/ 21 мая 2018

Создайте файл для загрузки в Runner Collection Postman со следующей структурой:

[{
    "testSequence": ["First request name", "Second request name", "..." ],
    "anyOtherData":  "Whatever the request needs",
    "evenMoreData":  "Whatever the request needs",
    "...":           "..."
},{
    "testSequence": ["Login", "Check newsfeed", "Send a picture", "Logout" ],
    "username":  "Example",
    "password":  "correcthorsebatterystaple",
},{
    "...": "keep the structure for any other test scenario or request sequence"
}]

Поместите все свои тестовые последовательности в этот файл, затем заставьте Почтальона проверять список после каждого запроса и решать, что выполнять дальше. Это можно сделать е. г. в «блоке тестов» всей коллекции:

// Use the mechanism only if there is a test scenario file
// This IF prevents the block from firing when running single requests in Postman
if (pm.iterationData.get("testSequence")) {

    // Is there another request in the scenario?
    var sequence = pm.globals.get("testSequence");
    if ((sequence instanceof Array) && (sequence.length > 0)) {

        // If so, set it as the next one
        var nextRequest = sequence.shift();
        pm.globals.set("testSequence", sequence);
        postman.setNextRequest(nextRequest);

    } else {
        // Otherwise, this was the last one. Finish the execution.
        postman.setNextRequest(null);
    }
}

Если ваши запросы должны использовать разные данные во время разных прогонов, вы можете определить данные во входном файле и использовать их как переменные в запросе.

...