Тестирование API с помощью PostMan

внешний интерфейс API Postman тестовое задание

Недавно обновлялся старый проект, первый шаг - сменить версию ноды с4.xобновитесь до8.x, опасаюсь, что будут проблемы с обновлением, поэтому интерфейс сервиса нужно верифицировать; Если вы вручную вводите различные URL-адреса, проверьте человеческую плоть, один или два в порядке, весь сервис. . Существуют десятки интерфейсов, что является пустой тратой времени -.-; Поскольку это проект службы чистого интерфейса, планируется провести волну автоматизированного тестирования соответствующего API; Поэтому я начал искать соответствующие инструменты и вдруг обнаружил, что обычно используюPostManКажется, он также поддерживает написание тестовых случаев -.-, поэтому я следил за документацией для волны; Днем я был очень взволнован, я использовал его раньшеPostManредактировать толькоHeader,Добавить кBodyОтправить запрос, который никогда не думал получитьPostManПриходите к тестированию, используйте его на полудня и почувствуйте, что я обнаружил новый континент.

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

Вроде скачать и пользоватьсяPostManДолжен пройти через стену -.- Потому что теперь есть две формы приложения:

  1. chromeплагин(От него скоро отказываются, рекомендуется использовать независимое приложение)
  2. Автономное приложение

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

Адрес облачного диска независимой версии приложения (MacТолько сегодня скачал версию 6.0.10, пожалуйста, поднимите, если она вам нужна): Ссылка: https://pan.baidu.com/s/18CDp2MUQCLgk_USlmVc-Gw Пароль:mrpf

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

Отправить запрос

ЭтоPostManСамое простое использование — отправить запрос. можно установитьHeader,Bodyи другая информация.

Collections

Мы можем сохранять запрос, отправляемый каждый раз, чтобы в следующий раз, когда мы запрашиваем интерфейс, мы могли вызывать его напрямую. Если запрос сохранен, он будет сохранен вCollectionsЗайдите внутрь, похоже на коллекцию.PostManПредоставляет метод для запуска всегоCollectionsво всех запросах.

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

При сохранении записи запроса выберите соответствующийCollectionТолько что

Начать тестирование API

расположение тестового скрипта

PostManТестовый скрипт, написанный для запроса, в этой позиции используетJavaScriptсинтаксис с некоторыми предварительно сконфигурированными фрагментами кода справа. и мы можемPre-request Scriptскрипт для выполнения перед отправкой запроса.

какой-то простой синтаксис

PostManУтверждение также предоставляется, чтобы помочь с некоторой проверкой.

tests['Status code is 200'] = responseCode.code === 200

tests['Data length >= 10'] = JSON.parse(responseBody).data.length >= 10

назначить какtrueзначит пройти,falseза неудачу.testsРоль прямого назначения относительно ограничена, если вы выполняете какие-то другие асинхронные операции в скрипте, вам нужно использоватьpm.test.

setTimeout(() => {
  pm.test("test check", function () {
    pm.expect(false).to.be.true
  })
})

используйте только верхниеtestsНазначить+pm.test/pm.expectОн уже отвечает нашим потребностям, а остальное — просто синтаксический сахар поверх него.Различные примеры синтаксиса

Отправить запрос в тестовом скрипте

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

let responseJSON = JSON.parse(responseBody)

// 获取关注的第一个用户,并请求他的用户信息
pm.sendRequest(responseJSON[0].url, function (err, response) {
  let responseJSON = response.json()

  pm.test('has email', function () {
    pm.expect(responseJSON.email).is.be.true // 如果用户email不存在,断言则会失败
  })
});

Если у нас есть динамический интерфейс для тестирования, мы можем попробовать этот способ написания. возврат интерфейса первого уровняListВторичный интерфейс основан наListизIDдля получения соответствующей информации.

Как справиться с большим количеством повторяющейся логики утверждений

Нет никаких проблем с написанием соответствующего сценария утверждения для одного API. Но если это для всего проектаAPIписать, похоже на суждениеstatusCodeТакое утверждение выглядело бы излишним, поэтомуPostManЭто также принимается во внимание. в нашем творенииCollectionА в нижней папке мы можем напрямую писать сценарии утверждений для всех запросов в этой директории.

Сценарий здесь будет действовать на все запросы в каталоге. Таким образом, мы можем переместить некоторые общие утверждения сюда, вTestsНиже напишите целевой сценарий утверждения.

использование переменных

PostManПредусмотрены два типа переменных, один из которыхglobal,одинenvironment.

global

Как работает код:

pm.globals.set("variable_key", "variable_value") // set variable
pm.globals.get("variable_key") // get variable
pm.globals.unset("variable_key") // remove variable

Настройка через графический интерфейс:

После настройки мы можем использовать его следующим образом:

Мы можем использовать эти переменные в основном везде, где мы можем печатать.

environment

Переменная среды, это весовой коэффициентglobalВысшие переменные — это значения, которые устанавливаются для определенных сред. Операция аналогична.

При использовании метода кодовой операции просто поместитеglobalsзаменитьenvironmentВот и все. При инициировании запроса или отправке всех запросов одним щелчком мыши мы можем проверить соответствующую среду на использование разных переменных.

При тестировании большого количества API используйтеenvironmentустановитьdomainбудет хорошим выбором. Итак, в запросе нам достаточно написать:

{{domain}}/res1
{{domain}}/res2

domain: https://api.github.com

Простой пример:

путем непосредственного запускаCollection, мы можем интуитивно увидеть все ситуации проверки интерфейса.

использованная литература

www.getpostman.com/docs/v6/

использовался раньшеPostMan, в лучшем случае имитироватьPOSTПросьба, я просто недавно столкнулся с подобной потребностью, и обнаружил, что оригиналPostManМожно сделать больше. Это просто использованиеPostManСамые основные операции для тестирования API, и есть некоторые функции, которые я не использовал в настоящее время, такие как интеграционное тестирование, генерацияAPIдокументы и тому подобное.

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