postman.setNextRequest не работает должным образом - PullRequest
0 голосов
/ 23 мая 2019

У меня есть коллекция, которая запускается из GitLab CI, и перед ее развертыванием я обычно пробую ее в программе pm pmner runner.

Коллекция имеет разные вызовы с одинаковой структурой на основе одного и того же кода с разными наборами данных,Что-то вроде следующего примера:

call 1
call 2 
call 3
call 4
call 1 
call 5
call 6
call 7
call 1
etc...

на основе условий «вызов 1», postman.setNextRequest() решает, следует ли выполнять вызов 2, 3 или 4 и т. Д.

Код работаетхорошо, но последний «цикл» (что-то вроде: вызов 1, вызов 8, вызов 9, вызов 10) не работает, а postman.setNextRequest() ничего не делает.

На CI Newman / Gitlab я получаюследующая строка: Attempting to set next request to $[collection_name], но запрос не будет установлен, пока в Runner Collection я не получаю ошибок.

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

код - это ЖЕ для всех запросов.

Вот фрагмент кодаэто работает для всех предыдущих сценариев, а не для последнего.Единственное, что я изменяю, это "checkJobName ()" if string и запросы "postman.setNextRequest"

const   jsonData = JSON.parse(responseBody),
        json_identifier = jsonData.stages;

json_identifier.forEach(function cicla(arr) {
    arr.jobs.forEach(function cicla(job) {

    function checkJobName() {
        if (job.name === "premio_manuale") {
            return true;
        }
    }

    if (checkJobName() === true) {
        pm.environment.set("id_job", job.id);
        pm.environment.set("jobName", job.name);
        pm.environment.set("jobStatus", job.status);
        pm.environment.set("jobValidation", job.validation);
        JobStatusPerformer();
    }

    //// check functions 

    function JobStatusPerformer(){
        if (job.status === "success" ) {
                console.log("il job " + job.id + " " + job.label + " è in stato " + job.status + ", vado in idle ");
                postman.setNextRequest("1111");
            } 
            if (job.status === "pending" && job.validation === "manual") {
               console.log("il job " + job.id + " " + job.label + " è in stato " + job.status + " e in modalità " + job.execution + " , avvio il Job Resolve");
               postman.setNextRequest("Resolve_pm");
            }
            if (job.status === "idle" && job.validation === "manual" && job.execution === "manual") {
               console.log("il job " + job.id + " " + job.label + " è in stato " + job.status + " e in modalità " + job.execution + " , avvio il Job Run");
               postman.setNextRequest("Run_pm");
            }
            else if (job.status === "idle" && job.validation === "auto" && job.execution === "auto") {
                console.log("il job " + job.id + " " + job.label + " è in stato " + job.status + " e in modalità " + job.execution + " , attendere l'avvio e risoluzione automatica.");
                postman.setNextRequest("222");
            }
            else if (job.status === "idle" && job.validation === "manual" && job.execution === "auto") {
                console.log("il job " + job.id + " " + job.label + " è in stato " + job.status + " e in modalità " + job.execution + " , il job è in idle, attendere la risoluzione del job precedente. Se già in stato 'success' visualizzare il log errori");
                postman.setNextRequest("333");
            }
            if (job.status === "running" && job.validation === "manual" && job.execution === "manual") {
                console.log("il job " + job.id + " " + job.label + " è in stato " + job.status + " e in modalità " + job.execution + " , avvio il Job resolve");
                postman.setNextRequest("Resolve_pm");
            }
            else if (job.status === "running" && job.validation === "auto" && job.execution === "auto") {
                console.log("il job " + job.id + " " + job.label + " è in stato " + job.status + " e in modalità " + job.execution + " , attendere la risoluzione automatica.");
                postman.setNextRequest("444");
            }
            else if (job.status === "running" && job.validation === "manual" && job.execution === "auto") {
                console.log("il job " + job.id + " " + job.label + " è in stato " + job.status + " e in modalità " + job.execution + " , avvio il Job resolve");
                postman.setNextRequest("Resolve_pm");
            }
            if (job.status === "failed") {
               console.log("lo stato del job " + job.id + " è " + job.status + ". Verificare i log.");
               postman.setNextRequest("555");
            }
            else {
                postman.setNextRequest("666");
            }
    }

    });
});

1 Ответ

0 голосов
/ 24 мая 2019

До сих пор трудно пройти через ваш код без описания изменения состояния вашего ошибочного цикла.Размещен ли этот тест-код в каждом из запросов?Как они упорядочены в коллекции?

Однако вы пишете setNextRequest два раза, например, в случае job.status === "success"

сначала

 if (job.status === "success" ) {
                console.log("il job " + job.id + " " + job.label + " è in stato " + job.status + ", vado in idle ");
                postman.setNextRequest("1111");
            }

выполняется для установки postman.setNextRequest ("1111");и затем после этого в последней строке также выполняется запрос else.

if (job.status === "failed") {
               console.log("lo stato del job " + job.id + " è " + job.status + ". Verificare i log.");
               postman.setNextRequest("555");
            }
            else {
                postman.setNextRequest("666");
            }

А затем ваш исходный postman.setNextRequest("1111") перезаписывается postman.setNextRequest("666") Пожалуйста, имейте в виду, setNextRequest не выполняет запрос nex немедленно,Он изменяет только порядок рабочего процесса.

Пожалуйста, попробуйте изменить код, особенно JobStatusPerformer (), используя операторы else.

...