Postman collection runner не применяет данные к запросам

#javascript #postman #postman-collection-runner #postman-pre-request-script

#javascript #postman #postman-collection-runner #postman-pre-request-script

Вопрос:

Это звучит просто, но я понятия не имею, что делает postman; моя настройка выглядит следующим образом:

входной файл:

 [
{
    "url": "http://localhost:3000/gadgets/",
    "gadget_id": "8f338a25-c52a-4c47-9d5f-69a6c48c24f2",
    "user_id": ""
},
{
    "url": "http://localhost:3000/gadgets/",
    "gadget_id": "32461687-530e-4730-86c4-00fa4c284cd9",
    "user_id": ""
},
{
    "url": "http://localhost:3000/gadgets/",
    "gadget_id": "913ab956-b89d-41a2-9c09-0a970e202440",
    "user_id": ""
},
{
    "url": "http://localhost:3000/gadgets/",
    "gadget_id": "55c30784-3ad1-4a4e-a781-51a6f0f2fa42",
    "user_id": ""
},
{
    "url": "http://localhost:3000/gadgets/",
    "gadget_id": "55c30784-3ad1-4a4e-a781-51a6f0f2fa42",
    "user_id": ""
},
{
    "url": "http://localhost:3000/gadgets/",
    "gadget_id": "",
    "user_id": "4b1c6bc3-d44d-492b-8360-d5076913578b"
},
{
    "url": "http://localhost:3000/users/",
    "gadget_id": "",
    "user_id": "db0722e7-3224-4db1-8a94-372ab462ae70"
},
{
    "url": "http://localhost:3000/users/",
    "gadget_id": "",
    "user_id": "8d0f87f1-6697-4e08-8ddd-0e34e2015787"
},
{
    "url": "http://localhost:3000/users/",
    "gadget_id": "",
    "user_id": "9d788283-87a9-4c38-8d48-30ddc1604058"
},
{
    "url": "http://localhost:3000/users/",
    "gadget_id": "",
    "user_id": "8a86b353-df4c-40fd-a5a1-cfa5f27c41c4"
},
{
    "url": "http://localhost:3000/users/",
    "gadget_id": "",
    "user_id": "a67485e5-fb13-4863-ab55-01fd58c2600f"
},
{
    "url": "http://localhost:3000/users/",
    "gadget_id": "",
    "user_id": "3ab7211d-99e7-4cc6-a862-ac106c2a24de"
},
{
    "url": "http://localhost:3000/users/",
    "gadget_id": "",
    "user_id": "378b2e77-7e18-4d75-b780-c9281b86c8ee"
},
{
    "url": "http://localhost:3000/users/",
    "gadget_id": "",
    "user_id": "df1e35ca-37c5-4026-aa59-ebc02e348fdf"
},
{
    "url": "http://localhost:3000/users/",
    "gadget_id": "",
    "user_id": "2e0aadab-efe2-42e5-9088-c0bb1c6c9631"
}
]
  

и запрос POST для создания гаджетов:

тело (raw / JSON):

 {
    "id": {{gadget_id}}
}
  

Сценарий предварительного запроса:

 // Initialize ids
var gadget_id= pm.iterationData.get("gadget_id");
  

Согласно:

https://blog.postman.com/using-variables-inside-postman-and-collection-runner/

этого должно быть достаточно. Тело не создано (идентификатор установлен пустым).

Как я могу заставить postman прочитать файл и правильно присвоить значение переменной?

Редактировать:

Попытался заключить переменную в двойные кавычки, но она все еще не установлена:

 {
    "id": "{{gadget_id}}"
}
  

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

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

2. Переменная в этом экземпляре предназначена для представления массива идентификаторов, считываемых из файла JSON; я хочу иметь отдельный запрос POST для каждого отдельного идентификатора, который хранится в этой переменной. Я нахожу бесчисленные примеры установки единственной переменной, но ни одного, где значение можно было бы повторить.

3. Установка двойных кавычек и очистка сценария предварительного запроса не устраняет проблему; телу по-прежнему не присвоен идентификатор.

4. Хорошо, файл данных представляет собой строку для этой переменной, поэтому я предложил это в теле. Ваш вопрос и ваш вариант использования разные — возможно, было бы неплохо отредактировать вопрос и уточнить, что вы пытаетесь сделать.

5. @DannyDainton community.postman.com/t/cannot-use-variables-in-get-requests /…

Ответ №1:

Сначала это не казалось интуитивно понятным; но postman присваивает значения переменных только во время запуска Collection Runner. Переменные не могут быть назначены при выполнении отдельных запросов.

Настройка:

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

 var gadget_id = pm.iterationData.get("gadget_id");
  

Тело:

 {
    "id": "{{gadget_id}}"
}
  

Все запросы выполняются параллельно в программе сбора данных; я понятия не имею, как запускать наборы и подмножества запросов в заданной последовательности.

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

1. Они могут быть назначены для выполнения с отдельными запросами, это обычный вариант использования для них. 😁 Способ, которым вы пытались их запустить, не сработал, потому что вы не так используете переменные Postman в приложении. Существует несколько разных переменных в разных областях, которые работают по-разному.