1. Текущий статус тестирования интерфейса
редактировать
2. Часто используемые решения
редактировать
3. Есть проблемы
4. Появляется артефакт Apifox
Apifox=Postman + Swagger + Mock + JMeter
Официальный адрес сайта:www.apifox.cn
Apifox да API Интегрированная платформа совместной работы для документирования, отладки, макетирования и тестирования, позиционирования Postman + Swagger + Mock + Дж Метер. С помощью одной системы и одной копии мы можем решить проблему синхронизации между несколькими системами. Просто определите это API Документация, API Отладка, API данные Mock、API Автоматизированное тестирование можно использовать напрямую, без повторного определения API; Документация и API Используйте один и тот же инструмент и API для разработки и отладки. После завершения отладки и всегарантировано и API Определения документов абсолютно одинаковы. Эффективный、своевременный、точный!
Определение документа интерфейса. Хотя Apifox соответствует спецификациям OpenApi 3.0 (ранее Swagger) и JSON Schema, он также обеспечивает очень простую в использовании функцию визуального управления документами с нулевыми затратами на обучение и очень эффективен.
Отладка интерфейса: Apifox имеет функции, которые есть у Postman, такие как переменные среды, сценарии перед выполнением, сценарии после выполнения, глобальное совместное использование файлов cookie/сеансов и т. д., и он так же эффективен и прост в использовании, как и Postman.
Data Mock: встроенный механизм правил Mock.js очень удобен для имитации различных данных, и вы можете писать макетные правила, определяя структуру данных. Поддерживает добавление «ожиданий» для возврата различных фиктивных данных на основе параметров запроса. Самое главное, что Apifox может моделировать очень удобные для пользователя данные с нулевой конфигурацией, о чем будет рассказано позже в этой статье.
Автоматическое тестирование интерфейса. Обеспечивает тестирование коллекции интерфейсов. Вы можете быстро создать набор тестов, выбрав интерфейс (или вариант использования интерфейса). В настоящее время дополнительные функции для автоматизации тестирования интерфейсов все еще находятся в стадии разработки, так что следите за обновлениями! Цель: JMeter будет иметь все функции и станет более удобным в использовании.
5. Десять основных функций Apifox
редактировать
1. Синтаксис скриптов Apifox на 100% совместим с синтаксисом скриптов Postman, а скрипты Postman можно легко перенести на Apifox.
редактировать
2. Как использовать
2.1 Скрипты можно добавить по следующим двум ссылкам:
существовать Воляперед отправкой запроса на сервер,Используйте предварительные сценарии.
После получения ответа используйте Постскриптум (настройки утверждений).
редактировать
2.2. PostMan добавляет утверждения в сценарий предварительного запроса и тесты.
Сценарии можно добавить в следующие два этапа:
существовать Воляперед отправкой запроса на сервер,использовать Pre-request script
После получения ответа используйте Tests
редактировать
Apifox имеет набор интерфейсных документов и форматов данных интерфейса, которые могут одновременно использоваться внешними и внутренними разработчиками и тестировщиками, что может сэкономить много затрат на связь и полезно для улучшения совместной работы в команде. Apifox — относительно комплексный инструмент, и стоимость обучения определенно выше, чем у Postman. Если вы просто личный разработчик и у вас нет таких высоких требований к документации и тестированию, небольшой и красивый PostMan все равно будет лучшим выбором. Вы Для крупных проектов и совместной работы нескольких команд Apifox действительно является хорошим выбором.
PostMan гораздо проще использовать при написании сценариев, но Apifox совместим со сценариями PostMan.
1. Убедитесь, что результат, возвращаемый запросом, верен.
// pm.response.to.have
pm.test('Код состояния возвращаемого результата: 200', function () {
pm.response.to.have.status(200);
});
// pm.expect()
pm.test('В настоящее время это фиктивная среда', function () {
pm.expect(pm.environment.get('env')).to.equal('production');
});
// response assertions
pm.test('Возвращаемый результат не содержит ошибок', function () {
pm.response.to.not.be.error;
pm.response.to.have.jsonBody('');
pm.response.to.not.have.jsonBody('error');
});
// pm.response.to.be*
pm.test('Возвращённый результат правильный', function () {
// assert that the status code is 200
pm.response.to.be.ok; // info, success, redirection, clientError, serverError, are other variants
// assert that the response has a valid JSON body
pm.response.to.be.withBody;
pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed
});
2. Запишите данные результата, возвращаемые запросом, в переменную среды.
// получать JSON Формат запроса возвращает данные
var jsonData = pm.response.json();
// Воля jsonData.token ценить записывает в переменные окружения
pm.environment.set('token', jsonData.token);
3. Проверьте, содержит ли тело ответа определенную строку.
pm.test('Body matches string', function() {
pm.expect(pm.response.text()).to.include('available');
});
4. Проверьте, содержит ли тело ответа строку, равную
pm.test('Body is correct', function() {
pm.response.to.have.body('response_body_string');
});
5. Проверьте значение JSON
pm.test('Your test id', function() {
var jsonData = pm.response.json();
pm.expect(jsonData.data.id).to.eql("1");
});
6. Проверьте, установлен ли заголовок Content-Type.
pm.test('Content-Type header is present', function() {
pm.response.to.have.header('Content-Type');
});
7. Проверьте, составляет ли время ответа на запрос менее 200 миллисекунд.
pm.test('Response time is less than 200ms', function() {
pm.expect(pm.response.responseTime).to.be.below(200);
});
8. Проверьте, равен ли код состояния HTTP 200.
pm.test('Status code is 200', function() {
pm.response.to.have.status(200);
});
9. Проверьте, содержит ли имя кода состояния HTTP определенную строку.
pm.test('Status code name has string', function () {
pm.response.to.have.status('OK');
});
10. Верен ли код состояния запроса POST?
pm.test('Successful POST request', function() {
pm.expect(pm.response.code).to.be.oneOf([201, 202]);
});
Apifox имеет встроенную библиотеку утверждений ChaiJS. Ниже приведены часто используемые примеры сценариев проверки утверждений, но не все примеры. Для получения дополнительной информации обратитесь к документации: ChaiJS ожидает библиотеку BDD.
1. Утвердить, что целевая строка содержит другую строку.
pm.test('Утверждаем, что целевая строка содержит другую строку', function() {
pm.expect('foobar').to.have.string('bar');
});
2. Утвердить, что цель строго равна (===) определенному значению.
const TEN = 10;
pm.test('Check if number is equal to 10', function() {
pm.expect(TEN).to.equal(10);
});
Если установлен флаг глубины, утверждается, что целевая глубина равна значению
pm.test('Утверждаем, что целевая глубина равна предоставленному JSON', function() {
pm.expect(data1).to.deep.equal(data2);});
Уведомление:
Установите глубокий тег, а затем используйте утверждения равенства и свойства. Этот тег позволяет последующим утверждениям не сравнивать сами объекты, а рекурсивно сравнивать пары ключ-значение объектов.
3. Утвердить, что глубина равна определенному значению, которое эквивалентно сокращению deep.equal(value).
pm.test('Утверждаем, что целевая глубина равна указанной JSON', function() {
pm.expect(data1).to.deep.equal(data2);
});
4. Утвердить текущую среду
pm.test('Check if environment is production', function() {
pm.expect(pm.environment.get('env')).to.equal('production');
});
5. Утвердить тип данных
pm.test('Check if target is string', function() {
pm.expect('Postman').to.be.a('string');
});
pm.test('Check if target is an object', function() {
pm.expect({ a: 1 }).to.be.an('object');
});
pm.test('Check if target is undefined', function() {
pm.expect(undefined).to.be.an('undefined');
});
Уведомление:
Рекомендуется использовать .a Метод проверяет тип данных шаблона.
данныетипда С учетом регистра。
6. Подтвердить, пусто ли оно
pm.test('Check if array is empty', function() {
pm.expect([]).to.be.empty;
});
pm.test('Check if string is empty', function() {
pm.expect('').to.be.empty;
});
Вы также можете использовать метод .a, чтобы проверить, является ли тип данных пустым, прежде чем утверждать.
Пример:
pm.test('Check if array is empty', function() {
pm.expect([]).to.be.an('array').that.is.empty;
});
7. Утвердите ключевое значение целевого объекта.
pm.test('Check if object contains all provided keys', function() {
pm.expect({ a: 1, b: 2 }).to.have.all.keys('a', 'b');
});
pm.test('Checking if object contains any ONE of the keys', function() {
pm.expect({ a: 1, b: 2 }).to.have.any.keys('a', 'b');
});
pm.test('Check if object contains any NONE of the provided keys', function() {
pm.expect({ a: 1, b: 2 }).to.not.have.any.keys('c', 'd');
});
8. Проверьте, содержит ли целевой объект указанный атрибут.
pm.test('Check if object contains the property', function() {
pm.expect({ a: 1 }).to.have.property('a');
});
Уведомление:
Целевая аудитория должнада object、set、array или map。
если .keys Не впереди .all или .any, по умолчанию .all。
Поскольку доступны только некоторые типы данных целевых объектов. .keys метод, рекомендуется использовать его в первую очередь Метод .a утверждает тип данных.
pm.test('Check if object contains all the keys', function() {
pm.expect({ a: 1, b: 2 })
.to.be.an('object')
.that.has.all.keys('a', 'b');
});
9. Укажите длину целевого объекта.
pm.test('Check the length of the target', function() {
pm.expect('foo').to.have.lengthOf(3);
});
pm.test('Check the size of the target', function() {
pm.expect([1, 2, 3]).to.have.lengthOf(2);
});
10. Утвердить члены целевого объекта
pm.test('Check if the target has same members as the array set', function() {
pm.expect([1, 2, 3]).to.have.members([2, 1, 3]);
});
Уведомление:
По умолчанию, .members Используйте строгие сравнения.
members Порядок не влияет на результаты.
11. Подтвердите, что целевой объект содержит указанный элемент.
pm.test('Check if the target array includes the number provided', function() {
pm.expect([1, 2, 3]).to.include(2);
});
pm.test(
'Check if the target object includes the properties provided',
function() {
pm.expect({ a: 1, b: 2, c: 3 }).to.include({ a: 1, b: 2 });
},
);
Уведомление: Рекомендуется .include использовать перед .a Метод определения типа данных.
Пример:
pm.test(
'Check if the target is an array that includes the number specified',
function() {
pm.expect([1, 2, 3])
.to.be.an('array')
.that.includes(2);
},
);
Официальный адрес для скачивания с сайта:www.apifox.cn