У меня есть сценарий, для которого я использую Postman для выполнения вызовов API с внешним файлом данных CSV.
В этом файле есть набор данных, в котором у меня есть несколько объемов данных для каждой отдельной записи ( от 1 до 3). Когда я запускаю коллекцию, используя Runner, для каждой строки с менее чем 3 записями скрипт завершился неудачно, поскольку он считает оставшиеся записи неопределенными!
Есть ли способ динамически построить тело для каждой отдельной записи Файл CSV?
В CSV у меня есть:
For some lines 1 entry : res_mac1, res_ip1, res_name1
For some lines 2 entries: res_mac1, res_ip1, res_name1, res_mac2, res_ip2, res_name2
For some lines 3 entries: res_mac1, res_ip1, res_name1, res_mac2, res_ip2, res_name2, res_mac3, res_ip3, res_name3
У меня есть следующее тело:
{
"fixedIpAssignments": {
"{{res_mac1}}": {
"ip": "{{res_ip1}}",
"name": "{{res_name1}}"
},
"{{res_mac2}}": {
"ip": "{{res_ip2}}",
"name": "{{res_name2}}"
},
"{{res_mac3}}": {
"ip": "{{res_ip3}}",
"name": "{{res_name3}}"
}
}
}
Однако в ответе у меня есть запросы на Записи CSV с менее чем 3, которые терпят неудачу в соответствии с приведенным ниже примером только с 2:
{
"fixedIpAssignments": {
"11:22:33:44:55:66": {
"ip": "192.168.1.1",
"name": "Host 1"
},
"22:33:44:55:66:77": {
"ip": "192.168.1.2",
"name": "Host 2"
},
"{{res_mac3}}": {
"ip": "{{res_ip3}}",
"name": "{{res_name3}}"
}
}
}
Есть ли способ заблокировать эти неопределенные переменные ключ и данные, сохраняя при этом их в теле, на случай, если новый набор данных имеет переменную?
Я пробовал следующий сценарий предварительного запроса, но он не принимается почтальоном в отношении синтаксиса, а также возвращает массив для резервирования вместо чистого JSON:
_ = require('lodash');
let setCount = _.chain(data)
.keys()
.countBy((item) => item.includes('mac'))
.value()
.true
var reservations = []; //Not sure an array is the good choice here...
for(var i = 1; i <= setCount; i++) {
reservations.push(
data[`res_mac${i}`]: { //Syntax error according to Postman...
"ip": data[`res_ip${i}`],
"name": data[`res_name${i}`]
}
);
}
let requestBody = {
"fixedIpAssignments": {
reservations
}
};
pm.variables.set('requestBody', JSON.stringify(requestBody));
А затем просто введите следующую команду в Тело:
{{requestBody}}