Тест почтальона для анализа тела ответа json и проверки наличия в массиве повторяющихся значений - PullRequest
2 голосов
/ 28 января 2020

Я хотел бы написать тест в Postman, который подтверждает, что в массиве объектов нет повторяющихся значений. Вот пример ответа:

{
    "customerNumber": "123",
    "customCategories": [
        {
            "customCategoryID": "1546",
            "customCategoryDesc": "7100",
            "itemNumbers": [
                "7205",
                "1834"
            ]
        },
        {
            "customCategoryID": "1547",
            "customCategoryDesc": "7130",
            "itemNumbers": [
                "2251",
                "9832"
            ]
        },
        {
            "customCategoryID": "1548",
            "customCategoryDesc": "7315",
            "itemNumbers": [
                "1225541",
                "1197233"
            ]
        },
        {
            "customCategoryID": "1546",
            "customCategoryDesc": "7100",
            "itemNumbers": [
                "7205",
                "1834"
            ]
        },
    ]
}

Как видите, «customCategoryID»: «1546» повторяется; поэтому я хочу, чтобы тест не прошел этот ответ, а также отображал повторяющееся значение customCategoryID ("1546").

Я просмотрел пару ответов в этом вопросе и этом вопрос , но нужно использовать последний синтаксис тестового сценария, чтобы Postman обновил свою библиотеку JS, а также получил подтверждение для дублированных данных.

Помощь в этом очень ценится.

1 Ответ

1 голос
/ 28 января 2020

Вы можете попробовать что-то вроде этого, чтобы проверить дубликаты идентификаторов:

function checkIfArrayIsUnique(array) {
  return array.length === new Set(array).size;
}

pm.test('Check is Ids are unique', () => {
    let ids = []
    _.each(pm.response.json().customCategories, (item) => {
        ids.push(item.customCategoryID)
    })

    pm.expect(checkIfArrayIsUnique(ids), ids).to.be.true
})

Он проходит через свойство customCategoryID каждого объекта в массиве customCategories и сохраняет это значение в ids array.

Функция checkIfArrayIsUnique берет этот массив ids и использует метод Set для сравнения.

Метод Set создает новый объект из массива ids, который содержит только уникальные значения, поэтому он проверяет, соответствует ли длина массива ids новому размеру Sets, возвращает либо значение true, либо false. .

Существует оператор basi c pm.expect(), который проверяет, возвращает ли функция checkIfArrayIsUnique значение true, если она не уникальна, она возвращает false и не проходит тест.

Postman Test

...