Быстрая помощь с вложенными объектами - PullRequest
0 голосов
/ 28 апреля 2020

Выполнение запроса GET, который возвращается в формате XML. Я преобразовал это в JSON, как описано ниже. Я ищу, чтобы разобрать массив и установить массив в качестве env. переменная для каждого указанного c объекта в массиве.

Как можно выполнить цикл через Tuple.Answer, чтобы получить все выделенные значения для каждого объекта из ответа? С текущими сценариями тестирования я получаю следующее в моей переменной enid ActionID: [“1965555”,“1965555”,“1965555”,“1965555”,“1965555”,“1965555”]

Путь к данным, которые я хочу получить:

BESAPI.Query.Result.Tuple.Answer[0]._

Вот мой сценарий действия:

var jsonData = xml2Json(responseBody);

var ActionIDs = ;

.each(jsonData.BESAPI.Query.Result.Tuple[0].Answer[0]., () => {
  ActionIDs.push(jsonData.BESAPI.Query.Result.Tuple[1].Answer[0]._)
})

pm.environment.set(“ActionID”, ActionIDs.shift());

pm.environment.set(“ActionIDs”, JSON.stringify(ActionIDs));

pm.test(“Status code is 200”, function() {
  console.log(pm.response.code);
  pm.response.to.have.status(200);

});

Ответ:

    <?xml version="1.0" encoding="UTF-8"?>
<BESAPI xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="BES.xsd">
    <Query Resource="(id of it, name of it, state of it) of bes actions">
        <Result>
            <Tuple>
                <Answer type="integer">1965354</Answer>
                <Answer type="string">Test Policy 2: Test Policy Azure Test: (1/4)</Answer>
                <Answer type="string">Open</Answer>
            </Tuple>
            <Tuple>
                <Answer type="integer">1965555</Answer>
                <Answer type="string">Test Policy 2: Test Policy Azure Test: (2/4)</Answer>
                <Answer type="string">Open</Answer>
            </Tuple>
            <Tuple>
                <Answer type="integer">1965761</Answer>
                <Answer type="string">Test Policy 2: Test Policy Azure Test: (3/4)</Answer>
                <Answer type="string">Open</Answer>
            </Tuple>
            <Tuple>
                <Answer type="integer">1965962</Answer>
                <Answer type="string">Test Policy 2: Test Policy Azure Test: (4/4)</Answer>
                <Answer type="string">Open</Answer>
            </Tuple>
            <Tuple>
                <Answer type="integer">1967153</Answer>
                <Answer type="string">Image: Windows Images: (1/6)</Answer>
                <Answer type="string">Open</Answer>
            </Tuple>
            <Tuple>
                <Answer type="integer">1967354</Answer>
                <Answer type="string">Image: Windows Images: (2/6)</Answer>
                <Answer type="string">Open</Answer>
            </Tuple>
            <Tuple>
                <Answer type="integer">1967555</Answer>
                <Answer type="string">Image: Windows Images: (3/6)</Answer>
                <Answer type="string">Open</Answer>
            </Tuple>
            <Tuple>
                <Answer type="integer">1967756</Answer>
                <Answer type="string">Image: Windows Images: (4/6)</Answer>
                <Answer type="string">Open</Answer>
            </Tuple>
            <Tuple>
                <Answer type="integer">1967957</Answer>
                <Answer type="string">Image: Windows Images: (5/6)</Answer>
                <Answer type="string">Open</Answer>
            </Tuple>
            <Tuple>
                <Answer type="integer">1968158</Answer>
                <Answer type="string">Image: Windows Images: (6/6)</Answer>
                <Answer type="string">Open</Answer>
            </Tuple>
        </Result>
        <Evaluation>
            <Time>8.844ms</Time>
            <Plurality>Plural</Plurality>
        </Evaluation>
    </Query>
</BESAPI>

1 Ответ

0 голосов
/ 29 апреля 2020

Примерно так должны хранить эти идентификаторы как переменную окружения:

let jsonObject = xml2Json(responseBody),
    ActionIDs = [];

_.each(jsonObject.BESAPI.Query.Result, (arrItem) => {
    _.each(arrItem, (result) => {
        ActionIDs.push(result.Answer[0]["_"])
    })
})

pm.environment.set("ActionIDs", JSON.stringify(ActionIDs));
...