Как регистрировать ответы API в консоли и сохранять в файл данных с помощью pm.sendRequest - PullRequest
0 голосов
/ 24 октября 2018

Я довольно новичок в Почтальоне.

Я пытаюсь сгенерировать файл с использованием XML API и записать данные в консоль Postman, просматривая различные параметры запроса (в моем случае [DateOut]).Файл, который я пытаюсь сгенерировать, должен выглядеть следующим образом:


DateOut |PickupLocationCode |ItemType |Статус

10/19/2018 |YVR |A100 |В наличии
20.10.2008 |YYC |A200 |По запросу


Я узнал, как перебрать файл данных и получить действительные ответы (в Postman Runner под Body Response).Мой файл цикла данных (CSV) выглядит следующим образом:

DateOut |PickupLocationCode

10/19/2018 |YVR

10/20/2018 |YYC


Мой запрос API выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <GetItemTypeStatus xmlns="http://someurl.org/">
            <Credentials>
                <Agent>the_username</Agent>
                <Password>the_password</Password>
            </Credentials>
            <Data>
                <PickupLocationCode>{{PickupLocationCode}}</PickupLocationCode>
                <DateOut>{{DateOut}}</DateOut>
            </Data>
        </GetItemTypeStatus>
    </soap:Body>
</soap:Envelope>

Вот мой ответ API:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <GetItemTypeStatusResponse xmlns="http://tempuri.org/">
            <GetItemTypeStatusResult>
                <StatusInfo>
                    <Success>succeeded</Success>
                    <Remarks>Available</Remarks>
                </StatusInfo>
                <ItemsStatus>
                    <ItemStatus>
                        <PickupLocationCode>YVR</PickupLocationCode>
                        <ItemTypeID>109</ItemTypeID>
                        <ItemType>A100</ItemType>
                        <Status>Available</Status>
                    </ItemStatus>                  
                </ItemsStatus>
            </GetItemTypeStatusResult>
        </GetItemTypeStatusResponse>
    </soap:Body>
</soap:Envelope>

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

pm.environment.set("DateOut", "01/01/2018");
pm.environment.set("PickupLocationCode", "YVR");

Я использую приведенный ниже тест в Postman для записи значений в консоль.Источник: Извлечение значения из XML-ответа и установка его в качестве глобальной переменной в Postman

// Convert XML output to JSON format
var jsonObject = xml2Json(responseBody);

//Add Departure Date
let departuredate = pm.iterationData.get("DateOut");
//console.log("Departure Date: ", departuredate);

// Take care of Envelope and Body tags, grab data and add DateOut
var activeStatus = jsonObject['soap:Envelope']['soap:Body'].GetItemTypeStatusResponse.GetItemTypeStatusResult.ItemStatus.ItemStatus.concat(departuredate);

// Assigning the extracted value in to a global variable
pm.globals.set ("availability", JSON.stringify(activeStatus));
console.log(['Status '] + pm.globals.get("availability"));

Вот сценарий, который записывает ответ API в файл.Для этого нужен локальный сервер, но настройка была очень простой.Источник: https://documenter.getpostman.com/view/3407886/RWgp1fB5

 let dataToFile = {
        requestName: request.name || request.url,
        fileExtension: 'xml',
        responseData: pm.response.text()
    };

    pm.sendRequest({
        url: 'http://localhost:3000/write',
        method: 'POST',
        header: 'Content-Type:application/json',
        body: {
            mode: 'raw',
            raw: JSON.stringify(dataToFile)
        }
    }, function(err, res) {
        console.log(res);
    });

Что я еще не выяснил, так это как записать в файл только значения в тегах, а не весь ответ API.Буду признателен за любую помощь в этом.

Большое спасибо.

...