Как установить задержку в Postam Runner, используя csv-файл в качестве входных данных

#javascript #postman

#javascript #почтальон

Вопрос:

Я использую postman для тестирования API, который выглядит следующим образом: (это СООБЩЕНИЕ)

 {
"contact_name": "{{contact_name}}",
"contact_email": "{{contact_email}}",
"answers": [
    {
        "question_id": 1,
        "value": "{{value_1}}"
    },
    {
        "question_id": 2,
        "value": "{{value_2}}"
    }
   ],
  "disable_email": true
}
 

У меня есть среда с соответствующими переменными:

 contact_name,contact_email,value_1,value_2
 

И я использую Runner для загрузки CSV-файла, содержащего 100 000 строк.
На самом деле, он работает хорошо, но мне нужно ставить задержку, например, каждые 10 000 строк. Есть ли способ выполнить это? Я знаю, что есть способ установить задержку на каждой итерации, но я хотел бы знать, есть ли способ установить задержку (30 секунд) после 10 000 итераций.

Спасибо!

Комментарии:

1. просто любопытно, каков размер вашей оперативной памяти для запуска такого огромного CSV-файла?

2. Привет! Я запускаю его на компьютере Ubuntu с виртуальной машиной. 2 ядра и 8 ГБ оперативной памяти, однако для отправки всех запросов требуется всего от 2,5 до 3 ГБ оперативной памяти

3. вы используете newman или collection runner

4. помог ли вам этот ответ

Ответ №1:

Добавьте это в сценарий предварительного запроса

 if((pm.info.iteration 1)===10000){
setTimeout(()=>{},3000)
}
 

Это будет ждать 3 секунды перед отправкой rquest для итерации 10000, отсчет начинается с ‘0’, поэтому к этому добавляется 1.

Комментарии:

1. Привет! при достижении 10 000 запросов происходит сбой. Я получаю сообщение об ошибке out of array, и скрипт останавливается. Вот как выглядит сценарий предварительного запроса: pm.environment.set(«контакт» , data.contact); pm.environment.set(«значение_1» , data.значение_1); pm.environment.set(«значение_2» , data.значение_2); если((pm.информация.итерация 1)===10000){ setTimeout(()=>{},30000) } в чем может быть проблема?

2. это не имеет никакого отношения к этому предварительному запросу, мы не обращаемся ни к какому массиву здесь.

3. попробуйте распечатать pm.info.iteration и посмотрите, что вы получите

Ответ №2:

Это работает! Я просто добавил еще одно предложение if, потому что счетчик сбрасывался каждый раз. Вот как это работало:

 var cont = parseInt(pm.environment.get('cont'));

if((pm.info.iteration)==0) {
    pm.environment.set("cont", 5000);
}

if((pm.info.iteration 1)==cont) {
    cont=cont 5000;
    setTimeout(()=>{},120000);
    pm.environment.set("cont", cont);
}
 

(в этом примере я устанавливаю, что каждые 5000 итераций я устанавливаю задержку в 2 минуты)
И по какой-либо причине postman считывает все переменные как строки, я этого не знал