2016-03-15 4 views
2

С Postman можно сохранить специальное поле из тела ответа в переменную и использовать значение этой переменной в последовательном вызове.Почтальон: как оценить json массивы

Например: в своем первом обращении к WebService следующего возвращаются в теле ответа

[ { 
    "id" : "11111111-1111-1111-1111-111111111111", 
    "username" : "[email protected]", 
}, { 
    "id" : "22222222-2222-2222-2222-222222222222", 
    "username" : "[email protected]" 
} ] 

я добавил тест

postman.setGlobalVariable("user_0_id", JSON.parse(responseBody)[0].id); 

Теперь я посылаю последовательный запрос на webservice с URL-адресом

http://example.com/users/{{user_0_id}} 

Почтальон оценивает {{user_0_id}} - 11111111-1111-1111-1111-111111111111.

Это прекрасно работает. Но теперь я добавить к тесту моего первого звонка

postman.setGlobalVariable("users", JSON.parse(responseBody)); 

В моем втором запросе на веб-сервис я называю URL-адрес

http://example.com/users/{{users[0].id}} 

Но теперь {{users[0].id}} не может быть оценены, он остается тем же и не является заменен на 11111111-1111-1111-1111-111111111111.

Что я могу сделать? Каков правильный синтаксис вызова?

ответ

5

Чтобы сохранить массив в переменной global/environment, вы должны будете использовать JSON.stringify(). Вот выдержка из Postman documentation about environments:

Окружающая среда и глобальные переменные всегда будут храниться в виде строк. Если вы храните объекты/массивы, перед сохранением обязательно имейте JSON.stringify(), а JSON.parse() - при их извлечении.

Если это действительно необходимо, чтобы вы сохраняете полный ответ, сделать что-то подобное в ваших тестах для первого вызова:

var jsonData = JSON.parse(responseBody); 
// test jsonData here 

postman.setGlobalVariable("users", JSON.stringify(jsonData)); 

Чтобы получать идентификатор пользователя от глобальной переменной и использовать его в запрос URL, вам придется разобрать глобальную переменную в предварительно запроса сценария второго вызова и добавить значение к «временной переменной», чтобы использовать его в URL:

postman.setGlobalVariable("temp", JSON.parse(postman.getEnvironmentVariable("users"))[0].id); 

Следовательно, URL второго вызова будет b е:

http://example.com/users/{{temp}} 

В тестах на второй вызов, убедитесь, чтобы очистить переменную Темп в конце:

postman.clearGlobalVariable("temp"); 

Это должно сделать трюк для вас. Насколько мне известно, в настоящее время нет возможности анализировать глобальную переменную непосредственно в URL-адресе для доступа к определенным записям (например, вы пытались сделать с {{users[0].id}}).

Смежные вопросы