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

Программирование на Python для тестировщиков
онлайн, начало 18 октября
Школа для начинающих тестировщиков
онлайн, начало 17 октября
Тестирование REST API
онлайн, начало 21 октября
Организация автоматизированного тестирования
онлайн, начало 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
  • 448 сообщений
  • ФИО:Николай


Отправлено 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
  • 448 сообщений
  • ФИО:Николай


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

 

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

 

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


  • 0

#5 Spock

Spock

    Гуру

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

Отправлено 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 549 сообщений
  • ФИО:Роман

Отправлено 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 549 сообщений
  • ФИО:Роман

Отправлено 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 549 сообщений
  • ФИО:Роман

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

 

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

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

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

 

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


  • 0


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




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

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

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

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