задний план
Все больше и больше приложений создаются на основе разделения передней и задней частей. Внутренная часть предоставляет интерфейсы данных, а передняя часть вызывает интерфейс для возврата данных json и отображения их в пользовательском интерфейсе. В настоящее время становится все больше и больше Важно обеспечить правильность данных внутреннего интерфейса. Тестирование интерфейса должно решить эту проблему. Для многих команд тестирование интерфейса заключается в ручном запуске интерфейса и сравнении невооруженным глазом данных, возвращаемых интерфейсом, что неэффективно и подвержено ошибкам. Команда мобильной архитектуры Qunar разработала платформу управления интерфейсом YApi, чтобы решить эту проблему.Пользователям нужно только настроить входные параметры каждого интерфейса и подтвердить ОТВЕТ в визуальном графическом интерфейсе, чтобы реализовать автоматическое тестирование интерфейса, что значительно улучшает интерфейс Эффективность тестирования. Начнем подробно решать, как использовать платформу управления интерфейсом yapi для автоматизации тестового интерфейса.
Готов к работе
Если вы не развернули платформу управления интерфейсом yapi, вы можете перейти кобразец сайтапроверять.
После создания проекта и интерфейса необходимо перейти на страницу тестового набора и импортировать тестируемый интерфейс.
Базовые концепты
Основные понятия, которые необходимо изучить, в основном включают три аспекта: набор тестов, предварительный сценарий и тестовый сценарий.
тестовый набор
В обычном процессе разработки часто возникает проблема, заключающаяся в том, что каждый раз, когда интерфейсу отладки необходимо повторно заполнить параметры, набор тестов YApi может сохранить ранее заполненные параметры, чтобы облегчить следующую отладку. Каждый параметр запроса также можно прочитать через ранее запрошенные данные интерфейса или заполнить фиктивную случайную строку и проверить правильность возвращаемых данных, установив сценарий утверждения.
Pre-Script
Pre-Script включает в себя сценарий обработки параметров запроса и сценарий обработки данных ответа. Измените параметры запроса и возвращаемые данные ответа, настроив скрипт js. Сценарии его использования следующие:
- Параметры запроса интерфейса должны быть зашифрованы, а возвращаемый ответ расшифрован.
- Параметры запроса интерфейса необходимо добавить токен расчета
Пример скрипта обработки параметров запроса
Возьмите jquery ajax в качестве примера, предположим, что текущий параметр запроса
{
url: '/api/user?id=1',
method: 'POST',
headers: {
xxx: 'xxx'
},
data: {
type: 1
}
}
Тогда контекст общедоступной переменной содержит следующие свойства:
context = {
pathname: '/api/user',
query: {
id: 1
},
requestHeader: {
xxx: 'xxx'
},
method: 'POST',
requestBody: {
type:1
}
}
Предположим, нам нужно добавить параметр токена к URL-адресу, мы можем написать следующий собственный скрипт:
Вернуться к примеру скрипта обработки данных
После завершения приведенного выше примера запроса, предполагая, что возвращается responseBody={a:1}, контекст общедоступной переменной содержит следующие свойства:
context = {
pathname: '/api/user',
query: {
id: 1
},
requestHeader: {
xxx: 'xxx'
},
method: 'POST',
requestBody: {
type:1
},
responseData: {
a:1
},
responseHeader: {
content-type: 'application/json'
...
}
}
Предположим, нам нужно изменить значение данных ответа responseBody a на 2, мы можем заполнить следующий пользовательский скрипт:
Тест-скрипт
Утвердите параметры интерфейса или верните данные ответа с помощью пользовательских сценариев, нажмите «Тест», чтобы отредактировать страницу варианта использования интерфейса.
Поддерживаемые общедоступные переменные
1.assert
-
assert(value)
Определите, является ли значение правдой, например, утверждение (1) проходит успешно, утверждение (0) не выполняется, если значение не равно нулю, 0, ложно и т. д.
-
assert.equal(actual, expected)
Определите, соответствует ли фактическое ожидаемому, например, утверждение (1, 1) проходит
-
assert.notEqual(actual, expected)
Определить, не совпадает ли фактическое с ожидаемым
-
assert.deepEqual(actual, expected)
Предположим: факт = {а:1} - это объект, даже если ожидается = {а:1}, если используется assert.equal, он может быть не равен, потому что ссылка в js - это только указатель на объект, вы нужно использовать assert.deepEqual для сравнения Два объекта равны
-
assert.notDeepEaual(actual, expected)
Глубоко сравнивает, не равны ли два объекта
2.status
HTTP-код статуса
3.params
параметры http-запроса, комбинированный запрос и тело
4.body
вернуть тело ответа
5.header
вернуть заголовок ответа
6.records
Записанную информацию http-запроса, предполагая, что вам нужно получить параметры интерфейса или данные ответа с ключом 555, вы можете получить его через records[555].params или records[555].body
7.log
функция log(message), используемая при отладке, информация журнала печатается только после ошибки подтверждения
Пример
assert.equal(body.errcode, 0)
assert.equal(body.data.group_name, 'testGroup')
assert.equal(status, 200)
начать тестирование
Шаг 1: Настройте параметры
Помимо поддержки постоянных строк, YApi также поддерживает ложные случайные строки и переменные строки.
Макетные параметры
Параметр Mock будет генерировать случайную строку для каждого запроса, поддерживая все заполнители в mockjs.
Переменный параметр
YApi предоставляет мощную функцию переменных параметров, вы можете использовать предыдущий интерфейс при тестировании参数
или返回值
в виде后面接口的参数
, даже если есть зависимости между интерфейсами, вы можете легкоТест в один клик~
Формат:
$.{key}.{params|body}.{path}
Например: есть два интерфейса, а именно «Заголовок навигации» и «Список статей».
Интерфейс списка статей должен передавать параметры:当前标题(id)
, и этот идентификатор должен пройти导航标题
Возвращаемое значение , тогда оно должно быть в文章列表
Найдите соответствующий id по прежнему ключу в поле ввода параметра.
导航标题
Параметры и возвращаемые значения имеют следующую структуру:
параметр:
возвращаемое значение:
но文章列表
Параметры можно настроить следующим образом:
в$.это использоватьдинамическая переменнаялоготип, $ 0,269.paramsТо есть параметр запроса варианта использования, значение ключа которого равно 269, 0,269 доллара США.bodyТо есть возвращаемое значение случая, когда значение ключа равно 269.
Советы. Перетащите элементы списка набора тестов вверх и вниз, чтобы изменить порядок тестов.
Сейчас в Япиquery
,body
,header
иpathParam
Входные параметры уже поддерживают функцию выбора щелчком мыши. Вам не нужно заполнять выражение самостоятельно, просто выберите выражение, которое хотите отобразить во всплывающем окне. Варианты ввода включают常量
,mock数据
, который также поддерживается в тестовой коллекции变量
выберите.
Конкретное использование: нажмите кнопку «Изменить», чтобы открыть генератор выражений, щелкните необходимые данные, чтобы создать выражение, и вы также можете просмотреть результаты выражения в реальном времени здесь.
Шаг 2: Запустите тест
В списке тестов вы можете увидеть ключ каждого теста, а также такие функции, как запуск тестирования и создание отчетов. Нажав, чтобы начать тест, он будет проверяться сверху вниз в соответствии с параметрами, определенными случаем.Если есть проблема с порядком, вы можете перетащить и настроить его. После завершения теста нажмите «Отчет», чтобы просмотреть результаты запроса.
постскриптум:
Автоматизированное тестирование YApi значительно упрощает подготовку и проверку данных тестирования интерфейса, и команда тестирования Qunar начала его использовать. В будущем YApi продолжит оптимизировать функцию автоматического тестирования, и я надеюсь, что вы можете высказать свое ценное мнение.
Платформа управления интерфейсом с открытым исходным кодомофициальный сайт Япи
Github: YApi github