Перейти к содержимому

Программирование на C# для тестировщиков
онлайн, начало 19 июля
SQL: Инструменты тестировщика
онлайн, начало 18 июля
Командная строка: инструменты тестировщика
онлайн, начало 18 июля
Chrome DevTools: Инструменты тестировщика
онлайн, начало 18 июля
Фотография

Postaman и тестирование *json ответа

postman автоматизация тестирование автоматизация тестирования javascript rest api

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#1 walenberg

walenberg

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Алекс

Отправлено 12 Март 2019 - 21:24

всем привет, в общем мучаюсь второй день с попытками сделать автотесты api более универсальными.

В общем есть пример json ответа

{
    "channels": [
        {
            "display_alias": "pervijkanal",
            "sharing": true,
            "is_radio": false,
            "title": "Pervijkanal HD",
            "cid": "pervijkanal",
            "group_index": 0,
            "recording": true,
            "qualities": [
                {
                    "logo_black_84": "/images/channels/logos/2a2a4aee64bbd6f7f817/black/84x48.png",
                    "title": "Pervijkanal HD",
                    "stream_types": [
                        "hds",
                        "hls",
                        "smooth_playready",
                        "dash",
                        "dash_widevine",
                        "dash_playready",
                        "hls5_fairplay",
                        "hls7_fairplay",
                        "hls5",
                        "hls7"
                    ],
                    "level": "hd",
                    "logo_white_42": "/images/channels/logos/2a2a4aee64bbd6f7f817/white/42x24.png",
                    "logo_token": "2a2a4aee64bbd6f7f817",
                    "logo_black_42": "/images/channels/logos/2a2a4aee64bbd6f7f817/black/42x24.png",
                    "logo_white_84": "/images/channels/logos/2a2a4aee64bbd6f7f817/white/84x48.png",
                    "availability": "available"
                }
            ],
            "recommendations": true,
            "selective_recall_seconds": 1,
            "id": "pervijkanal",
            "aliases": [
                "Pervijkanal"
            ]
        },
        {
            "display_alias": "vtorojkanal",
            "sharing": true,
            "is_radio": false,
            "title": "Vtorojkanal HD",
            "cid": "vtorojkanal",
            "group_index": 0,
            "recording": true,
            "qualities": [
                {
                    "logo_black_84": "/images/channels/logos/42a29350387ee5fda8fe/black/84x48.png",
                    "title": "Vtorojkanal HD",
                    "stream_types": [
                        "hds",
                        "hls",
                        "smooth_playready",
                        "dash",
                        "dash_widevine",
                        "dash_playready",
                        "hls5_fairplay",
                        "hls7_fairplay",
                        "hls5",
                        "hls7"
                    ],
                    "level": "hd",
                    "logo_white_42": "/images/channels/logos/42a29350387ee5fda8fe/white/42x24.png",
                    "logo_token": "42a29350387ee5fda8fe",
                    "logo_black_42": "/images/channels/logos/42a29350387ee5fda8fe/black/42x24.png",
                    "logo_white_84": "/images/channels/logos/42a29350387ee5fda8fe/white/84x48.png",
                    "availability": "available"
                }
            ],
            "recommendations": true,
            "selective_recall_seconds": 1,
            "id": "vtorojkanal"
        }       
    ]
}

В этом ответе мне необходимо проверить display_alias

для каждого канала, их больше сотни.

 

Пытался сделать for, но получается ерунда.

Проверял путем 

tests["Pervijkanal.Display_alias"] = data.channels[0].display_alias === "pervijkanal"; 

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

 

Может быть кто-то подскажет более элегантное решение?


  • 0

#2 aid

aid

    Опытный участник

  • Members
  • PipPipPipPip
  • 445 сообщений
  • ФИО:Николай


Отправлено 13 Март 2019 - 00:09

1. Создать список с ожидаемыми данными.
2. Распарсить ЖСОН и циклом записать значения дисплей-алиясов во второй список.
3. Сравнить списки (циклом или функцией специфичной для вашего ЯП).
4 ?

5. Профит


  • 0

#3 walenberg

walenberg

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Алекс

Отправлено 13 Март 2019 - 07:07

Может есть готовые библиотеки, функции в JS?

 

1. Создать список с ожидаемыми данными.
2. Распарсить ЖСОН и циклом записать значения дисплей-алиясов во второй список.
3. Сравнить списки (циклом или функцией специфичной для вашего ЯП).
4 ?

5. Профит


  • 0

#4 aid

aid

    Опытный участник

  • Members
  • PipPipPipPip
  • 445 сообщений
  • ФИО:Николай


Отправлено 13 Март 2019 - 07:31

 

Может есть готовые библиотеки, функции в JS?

 

Обязательно есть.


  • 0

#5 Spock

Spock

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 441 сообщений
  • ФИО:Роман

Отправлено 13 Март 2019 - 08:23

не надо ничего парсить и циклов, это костыли

 

сгенерируйте схему и просто одной строкой валидируйте ответ по этой схеме


  • 0

#6 walenberg

walenberg

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Алекс

Отправлено 13 Март 2019 - 13:47

Я так понимаю, схема это какие поля и значения могут быть JSON, я прав? Не играет ли потом роли, если в ответе что-то поменяется местами? Например, как из представленного ответа, первый канал, уйдет на второе место, а второй на первый, мои тест кейсы не поломаются?

 

не надо ничего парсить и циклов, это костыли

 

сгенерируйте схему и просто одной строкой валидируйте ответ по этой схеме


  • 0

#7 walenberg

walenberg

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Алекс

Отправлено 13 Март 2019 - 13:49

Может пару ссылок подскажете где и что?

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

 

 

 

Может есть готовые библиотеки, функции в JS?

 

Обязательно есть.

 


  • 0

#8 Spock

Spock

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 441 сообщений
  • ФИО:Роман

Отправлено 13 Март 2019 - 13:57

 

 

Не играет ли потом роли, если в ответе что-то поменяется местами? Например, как из представленного ответа, первый канал, уйдет на второе место, а второй на первый, мои тест кейсы не поломаются?

не поломается

 

 

Может пару ссылок подскажете где и что?

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

делайте схемой, не надо ничего парсить и изобретать костыль, который потом вам в колено и выстрелит


  • 0

#9 walenberg

walenberg

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Алекс

Отправлено 13 Март 2019 - 20:10

Ок, сгенерировал схему. Но как мне проверять значения в этой схеме, точнее сравнивать результат? Мне необходимо понимать, что значения полей не были изменены. Схема же только структуру проверяет, или я не прав?

 

 

 

 

Не играет ли потом роли, если в ответе что-то поменяется местами? Например, как из представленного ответа, первый канал, уйдет на второе место, а второй на первый, мои тест кейсы не поломаются?

не поломается

 

 

Может пару ссылок подскажете где и что?

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

делайте схемой, не надо ничего парсить и изобретать костыль, который потом вам в колено и выстрелит

 


  • 0

#10 Spock

Spock

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 441 сообщений
  • ФИО:Роман

Отправлено 13 Март 2019 - 20:44

 

В этом ответе мне необходимо проверить display_alias

для каждого канала, их больше сотни.

вот как раз этого и не надо делать

 

зачем вам вообще какие-то данные проверять в тестах? это уже лишнее, это уже не функциональное тестирование. проверили схемой что структура правильная, что значения есть, и хватит


  • 0

#11 walenberg

walenberg

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Алекс

Отправлено 13 Март 2019 - 20:48

А вот в этом и вся суть тестирования, что у нас эти данные не должны меняться без "согласия", но они могут меняться во время разработки, а мы должны проверять, что все осталось прежним.

Короче, это регрессионное тестирование.

 

 

 

В этом ответе мне необходимо проверить display_alias

для каждого канала, их больше сотни.

вот как раз этого и не надо делать

 

зачем вам вообще какие-то данные проверять в тестах? это уже лишнее, это уже не функциональное тестирование. проверили схемой что структура правильная, что значения есть, и хватит

 


  • 0

#12 Spock

Spock

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 441 сообщений
  • ФИО:Роман

Отправлено 13 Март 2019 - 21:21

 

А вот в этом и вся суть тестирования, что у нас эти данные не должны меняться без "согласия", но они могут меняться во время разработки, а мы должны проверять, что все осталось прежним.

Короче, это регрессионное тестирование.

вот разработчики и должны покрыть эти данные тестами, там этот тест скорее всего за 5 минут можно написать. Нет смысла переходить на более высокий уровень РЕСТ тестов просто для проверки данных

 

это ситуация "тесты правильные, но выполнены на неправильном уровне"


  • 0


Программирование на С# для тестировщиков
онлайн
Автоматизатор мобильных приложений
онлайн
Selenium WebDriver: полное руководство
онлайн
Программирование на Python для тестировщиков
онлайн




Темы с аналогичным тегами postman, автоматизация, тестирование, автоматизация тестирования, javascript, rest api

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале