Начало работы с почтальоном

3 min


Введение

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

Хотя это хороший способ найти что-то, что может сломаться на стороне приложения, обращенной к пользователю, из-за неправильного использования – этим пренебрегают, так как API, которые обрабатывают ваши запросы, не проходят должного тестирования таким образом.

Что такое API?

Прежде всего, чтобы знать, как тестировать API, вы должны знать, что такое API. В очень в общих чертах, он позволяет двум программам взаимодействовать друг с другом для доступа к данным или к части функциональности других программ.

Это позволяет вам отправить HTTP-запрос для того, чтобы получить HTTP-ответВ более техническом плане. Это практически основа Интернета и то, как мы взаимодействуем с приложениями / как приложения взаимодействуют друг с другом.

Более конкретный пример – ваше приложение имеет графический интерфейс, в котором вы можете ввести название фильма, и оно возвращает результаты (ответ), основываясь на том, что вы написали (запрос). Вы можете сделать это с помощью API, который просто «выбирает» эти данные с сервера.

Другим примером может быть – вы хотите сделать платеж кому-либо (запрос), и данные получателей отправляются на сервер на основе вашего ввода, снова через API. На этот раз ответом будет то, что вы успешно (или неудачно) завершили платеж.

Зачем использовать почтальон?

Пока есть другие доступные инструменты (SoapUI, Katalon, Tricentis), Почтальон выделяется как один из наиболее удобных для начинающих инструментов, которые вы можете использовать, чтобы начать тестировать свой API.

Одна из главных причин этого заключается в том, что вам не нужно изучать новый язык и вам когда-либо понадобится только JavaScript, независимо от языка, на котором написан API. Это позволяет очень быстро отправлять запросы в API, который вы ' повторное тестирование.

Некоторые из других причин:

  • Вы можете сделать автоматизированные коллекции тестов относительно легко и быстро
  • Вы также можете создавать многократно используемые тесты без необходимости их автоматического запуска или интегрировать с чем-либо
  • Наборы тестов можно экспортировать и запускать из командной строки с помощью пакета Node.js, новый человеккоторый, в свою очередь, может быть интегрирован с системой CI / CD
  • Может работать на Mac, Windows, Chrome Apps и Linux
  • Очень легко поделиться своими тестовыми коллекциями, даже когда они находятся в стадии разработки
  • Интерфейс позволяет импортировать конечные точки из развязность или RAML файлы, как отправная точка для тестов, что сокращает время, необходимое для выполнения запроса
  • Разработчики могут использовать его как быстрый способ тестирования конечной точки, пока она еще находится в стадии разработки, особенно в сочетании с предыдущей маркированной точкой
  • Позволяет хранить переменные из ответов для будущего использования
  • Позволяет использовать разные наборы переменных для тестирования разных настроек и динамических откликов.
  • Позволяет использовать файлы для Тестирование на основе данных
  • Имеет консоль, основанную на Гугл Хром имеет, что позволяет легко отлаживать при реализации тестов
  • Бесплатно (с премиальными функциями)
  • Сохраняет данные (на аккаунте) на разных устройствах

Минусы Почтальона

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

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

Используя Почтальон

Установка почтальона

Установить Почтальон так же просто, как перейти к Веб-сайт, скачав его и запустив .exe файл. Убедитесь, что вы загружаете правильную версию, но обычно она выбирает ту, которая основана на вашей системе:

Начиная почтальон

После того, как вы установили его, просто запустите Postman, и вы увидите следующий пользовательский интерфейс:

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

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

После создания учетной записи (или нет), вас встретят с главной страницы:

Отправка запросов

Перво-наперво, вы должны принять решающее решение – темный режим или светлый режим? Я предпочитаю режим Dark, который я буду использовать в оставшейся части этой статьи:

Как только вы решили, выбрав либо а) или б) создаст новую вкладку:

Теперь вы взаимодействуете с API, вызывая его URL или другими словами, вызывая конечную точку, Это означает, что вы свяжетесь с чем-то, что либо открыто выставлено, либо с тем, что вы начали локально.

Для простоты мы будем использовать что-то общедоступное. Этот сайт позволяет фильтровать аниме на основе вашего поискового запроса:

Это делает это вызывая конечную точку (отправка вашего запроса) и возврат веб-страницы с результатами (показ ответа).

Заметка: В зависимости от алгоритмов поиска, используемых веб-сайтами, они могут возвращать термины, которые приблизительно соответствуют поисковому запросу. Это может повлиять на ваши результаты позже в этой статье.

Вы можете использовать свой собственный критерий поиска или просто скопировать один из них, созданный на изображении примера:https://api.jikan.moe/v3/search/anime?q=aggretsuko&limit=16

Вернувшись обратно к Почтальону, мы можем ввести URL в указанное поле:

Params раздел автоматически заполняется параметрами, найденными в указанном URL. Это означает, что URL построен с двумя значения это повлияет на то, что вы получите в результате отправки этого запрос,

Теперь давайте отправим запрос:

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

Вы можете видеть, что есть несколько ключи которые имеют одинаковое имя, и каждый ключ имеет ценность, который отличается (но не должен быть), чем предыдущий элемент.

Давайте посмотрим на эту часть JSON:

{
    "mal_id": 12391,
    "url": "https://myanimelist.net/anime/12391/Mouretsu_Atarou_1990",
    "image_url": "https://cdn.myanimelist.net/images/anime/12/34815.jpg?s=18636fcc6bfe9368cbd3e021d6aca915",
    "title": "Mouretsu Atarou (1990)",
    "airing": false,
    "synopsis": "Batsugoro was the owner of a grocery store, Yaobatsu. When he tried to take a balloon hanged caught on the branch for a little child, he fell on to the ground to die. His son, Ataro, succeeded to the...",
    "type": "TV",
    "episodes": 34,
    "score": 0,
    "start_date": "1990-04-21T00:00:00+00:00",
    "end_date": "1990-12-22T00:00:00+00:00",
    "members": 231,
    "rated": "G"
},
{
    "mal_id": 34016,
    "url": "https://myanimelist.net/anime/34016/Hatsukoi_Monster__Mou_Chotto_dake_Tsuzukunja",
    "image_url": "https://cdn.myanimelist.net/images/anime/2/81905.jpg?s=b2c7e247db555c7477f319ace2d927c8",
    "title": "Hatsukoi Monster: Mou Chotto dake Tsuzukunja",
    "airing": false,
    "synopsis": "Unaired episode bundled with the eight manga volume.",
    "type": "OVA",
    "episodes": 1,
    "score": 6.27,
    "start_date": "2017-02-07T00:00:00+00:00",
    "end_date": "2017-02-07T00:00:00+00:00",
    "members": 5594,
    "rated": "PG-13"
}

Здесь представлена ​​вся информация, возвращаемая API, включая ссылки на используемые изображения.

Теперь вы можете спросить себя:

Зачем беспокоиться об этом, когда вы можете просто … зайти на сайт и выполнить поиск там?

Что ж, в процессе разработки иногда у вас будет команда разработчиков, в которой одна часть команды разрабатывает серверную часть (API), в то время как интерфейсная часть (GUI) еще не видна. На этом этапе очень удобно тестировать API сразу после его разработки, еще до того, как он будет интегрирован во что-либо еще, и возвращать обратную связь в случае, если это не соответствует документации или имеется какая-то ошибка.

Еще одна вещь, которую вы можете заметить, это то, что на сайте не используется много данных. Причина заключается в том, что разработчику этого веб-сайта, вероятно, не нужна эта информация, но API, который он использует, предлагает ее – потому что она требуется для разработчика этого API. Иногда даже есть данные, которые просто требуются в другом месте, и / или их вообще не нужно видеть в пользовательском интерфейсе.

Вы можете сохранить это запрос в случае, если вы хотите использовать его позже, и способ, которым вы делаете это, просто нажав Ctrl+S на клавиатуре или нажав Сохранить кнопка рядом с послать кнопка:

Выберите + Создать коллекцию кнопка, потому что вам нужно, чтобы сохранить запрос в:

И сохраните запрос:

Вы можете получить доступ к вашему коллекции а также Запросы сквозь Коллекции вкладка:

Нажав на запрос откроется в новой вкладке.

Создание утверждений

На вкладке «Тесты» вы увидите редактор кода:

Теперь давайте введем действительно простой тест, который утверждает, что мы получим код состояния 200:

pm.test("Status code is 200", function() {
    pm.response.to.have.status(200);
});

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

Нажатие кнопки послать опять же, к вашему запросу будет прикреплен тест. Этот, в частности, утверждает, что код состояния должен быть 200 OK,

Это используется для проверки того, успешно ли вы выполнили запрошенное действие (в данном случае получение некоторых данных). Если что-то пошло не так, вы получите один из кодов ошибок, таких как 404 not found, 400 bad request, так далее.

Отправляя запрос, мы приветствуем пройденный тестовый пример:

Теперь давайте попробуем проверить, содержат ли оба заголовка слово «семь»:

// Get the response
let responseBody = pm.response.json();

// Get the title of the first few elements
let firstTitle = responseBody.results().title;
let secondTitle = responseBody.results().title;

pm.test("Title of the first item in response contains 'seven'", function() {
    pm.expect(firstTitle.toLowerCase()).to.include("seven");
});

pm.test("Title of the second item in response contains 'seven'", function() {
    pm.expect(secondTitle.toLowerCase()).to.include("seven");
});

поскольку .to.include() чувствителен к регистру, мы используем .toLowerCase() функции в цепочке, в противном случае проверка, скорее всего, будет ошибочно провалена.

Выполнение этого фрагмента кода вернет нас:

Теперь представьте, что у вас есть список из более чем 10 элементов, которые вы хотите проверить … было бы безумно копировать и вставлять код 10 раз, а иногда вы можете реально получить более сотни результатов, поэтому давайте представим простой for-each петля.

Во-первых, давайте изменим q Param к чему-то более массовому Naruto и limit парам к 10:

pm.test("Status code is 200", function() {
    pm.response.to.have.status(200);
});

let responseBody = pm.response.json();
let results = responseBody.results;

results.forEach(function(result, i) {
    pm.test(`Title of item number ${i + 1} in response contains 'naruto'`, function() {
        pm.expect(result.title.toLowerCase()).to.include("naruto");
    });
});

В function(result, i) каждый из предметов автоматически присваивается result на каждом проходе и i последний параметр, поэтому JavaScript автоматически назначает его как внутренний счетчик. Вот почему мы используем ${i + 1} посчитать, какой предмет мы тестируем. Если бы мы не добавляли счетчик к самому имени теста, Почтальон отобразил бы его с одним тестом. Попробуйте удалить его, чтобы убедиться в этом.

Как видите, гораздо меньше кода и гораздо больше тестов!

В качестве упражнения попробуйте добавить еще один параметр, такой как type и установите его значение TVзатем утверждают, что каждый предмет имеет key установлен в TV, Помните, что он может вернуть термин, который приблизительно соответствует термину, если вы видите, что тест не пройден.

Представляем переменные

Для дальнейшей возможности Почтальона, давайте введем переменные в смесь. Я не буду вдаваться в глобальные переменные, переменные среды более полезны для начинающих:

Давайте добавим переменную окружения, такую ​​как naruto-10 с q а также limit установлен в naruto а также 10 соответственно:

Измените ваш URL, чтобы параметры не были жестко запрограммированы, а вместо этого могли быть установлены для любой переменной, которую мы определим впоследствии:

https://api.jikan.moe/v3/search/anime?q={{q}}&limit={{limit}}

Как видите, мы добавили q={{q}}&limit={{limit}} вместо фиксированного значения. {{}} Почтальон знает, что ищет переменную. Вы заметите, что он будет красным, и это потому, что мы не выбрали среду, поэтому Почтальон говорит нам, что она не может найти переменную:

И теперь мы можем изменить наш код для использования переменных окружения, вызвав environment объект:

let responseBody = pm.response.json();
let results = responseBody.results;

results.forEach(function(result, i) {
    pm.test(`Title of item number ${i + 1} in response contains ${environment.q}`, function() {
        pm.expect(result.title.toLowerCase()).to.include(environment.q);
    });
});

Отправка запроса в этом состоянии также должна вернуть нам несколько пройденных тестов:

Вывод

Почтальон выделяется как один из наиболее удобных для начинающих инструментов, которые вы можете использовать для начала тестирования своих API. Одна из главных причин этого – вам не нужно изучать новый язык и вам когда-либо понадобится только JavaScript, независимо от языка, на котором написан API.

Если вы хотите проверить себя и в данный момент участвуете в проекте, попробуйте выяснить, есть ли какой-нибудь API, к которому вы можете получить доступ, и, возможно, позвоните из Postman. Если нет, то есть много общедоступные API похож на тот, который используется в этой статье.


0 Comments

Ваш e-mail не будет опубликован. Обязательные поля помечены *