2015-10-02 2 views
1

У меня есть 2 chanined запросов в почтальоне, первый выполняет GET для отображения всех данных, а затем устанавливает переменную среды на основе возвращаемых значений. Второй запрос пытается POST использовать переменную окружения в качестве значения поля.Как передать переменную окружения в postman/newman

Запрос 1

GET /customers?$select=reference&$orderby=reference

с тестами:

tests["Status code is 200"] = responseCode.code === 200; 

var data = JSON.parse(responseBody); 
var ref = 0; 

for (i = 0; i < data.length-1; i++) { 
    if (data[i].reference == ref.toString()){ 
     ref++; 
     postman.setEnvironmentVariable("reference", ref); 
    } 
} 

в этой точке переменная среды reference имеет значение 5

Запрос 2

POST /customers

с телом:

{ 
    "reference": "{{reference}}", 
    "name": "Name" 
} 

Это прекрасно работает через графический интерфейс Почтальон, однако при запуске из командной строки Newman, когда запрос достигает API, значение reference является {{reference}} не 5 как и ожидалось.

я выполнил тот же тип замещения, с переменным окружением, установленные непосредственно из возвращенных данных

postman.setEnvironmentVariable('reference', data.reference); 

и этой работы в любом Постмане или Newman.

Может кто-нибудь помочь в том, почему настройка переменной в блоке сценария, подобной этому, не выполняется?

ответ

2

Проблема была в задании переменной окружения, она не была установлена. Установка этого параметра должна быть вне цикла работы:

tests["Status code is 200"] = responseCode.code === 200; 

var data = JSON.parse(responseBody); 
var ref = 0; 

for (i = 0; i < data.length-1; i++) { 
    if (data[i].reference == ref.toString()){ 
     ref++; 
    } 
} 

postman.setEnvironmentVariable("reference", ref); // <--- This 
Смежные вопросы