Использование инструмента Postman для тестирования интерфейса (4) — параметризация, выполнение вариантов использования и создание отчетов о тестировании (завершено)
Использование инструмента Postman для тестирования интерфейса (4) — параметризация, выполнение вариантов использования и создание отчетов о тестировании (завершено)

Введение

Утверждение Postman и извлечение параметров были представлены ранее. Это для операции после запуска интерфейса. Итак, что нам нужно сделать перед запуском интерфейса? Нет сомнений, что именно параметризация может помочь нам заранее создать тестовые данные. Для некоторых интерфейсов шифрования и аутентификации нам нужно сделать это заранее и сделать запросы с этими параметрами, чтобы интерфейс мог пройти. Далее я расскажу о параметризации в реальном тестировании, пакетном выполнении тестовых случаев и формировании отчетов о тестировании.

Параметризация

  представленный ранее《Использование инструмента Postman для тестирования интерфейса (2) — переменные среды и форматы параметров запроса》В статье говорилось о переменных средыизнастраивать,По сути это параметризация,Сейчас,Я представляю несколько других форм параметризации.

Первый тип: параметры, определяемые вами.

Следующий интерфейс подписи пользователя взят в качестве примера. Следующий код представляет собой локально разработанный интерфейс.

Язык кода:javascript
копировать
# Подпись пользователя
# Аутентификация: Подпись + отметка времени
def user_sign(request):
    if request.method == 'POST':
        client_time = request.POST.get('time','')
        client_sign = request.POST.get('sign','')
        address = request.POST.get('address','')
        print(client_sign,222)
        print(address,333)

    else:
        return 'ошибка'

    if client_time == '' or client_sign == '':
        return «Подпись пуста»

    # время сервера
    now_time = time.time()
    server_time = str(now_time).split('.')[0]
    # разница во времени
    time_diff = int(server_time) - int(client_time)
    if time_diff >= 60:
        return «Запросить тайм-аут»

    # знак
    md5 = hashlib.md5()
    sign_str = client_time + '&guest-test'
    # Преобразовать в кодировку
    sign_bytes_utf8 = sign_str.encode(encoding = 'utf-8')
    md5.update(sign_bytes_utf8)
    server_sign = md5.hexdigest()

    if server_sign != client_sign:
        return 'знак не удался'
    else:
        return 'знакуспех'

  Как видно из вышеизложенного, метод шифрования: client_time + '&guest-test'。

Если вы хотите запросить зашифрованный интерфейс, вы должны заранее указать в параметрах запроса информацию, которую необходимо зашифровать, следующим образом:

Код:

Язык кода:javascript
копировать
//Устанавливаем текущую временную метку (10 цифр)
postman.setGlobalVariable("time",Math.round(new Date()/1000));
time = postman.getGlobalVariable('time');

//Устанавливаем KEY_WORD как глобальную переменную
postman.setGlobalVariable("Key","&guest-test");
KEY_WORD = postman.getGlobalVariable("Key");

//Шифрование строки с помощью md5
var str = time+KEY_WORD;
var strmd5= CryptoJS.MD5(str).toString();
//signs устанавливается в глобальную переменную,signs
postman.setGlobalVariable("signs",strmd5);
//signss = pm.variables.get('signs')
console.log(time);
console.log(strmd5);

Если вы хотите установить 13-значную временную метку, вы можете написать:

Язык кода:javascript
копировать
//Устанавливаем текущую временную метку (13 бит)
// postman.setGlobalVariable("time",Math.round(new Date().getTime()));
// time2 = postman.getGlobalVariable('time');

Обработка перед запросом интерфейса помещается в сценарий предварительного запроса.

Откройте лог и посмотрите, получено ли значение:

Используйте {{}}, чтобы заключить параметры в кавычки и увидеть эффект:

Второй тип: используйте собственные функции почтальона для параметризации.

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

{{$randomInt}}: добавьте случайное целое число от 0 до 1000.

{{$timestamp}}: если текущая отметка времени имеет точность до секунд или миллисекунд, добавьте 000 в конец.

{{$randomDateRecent}}: создание стандартного китайского времени, формат: четверг, 12 марта 2020 г., 08:15:08 GMT+0800 (стандартное китайское время).

Используйте следующим образом:

Взгляните на результаты запроса в фоновом режиме:

Я преобразовал переданное время randomDateRecent, и формат отображения: %Y-%m-%d %H:%M:%S

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

нравиться:

Язык кода:javascript
копировать
// случайная строка
postman.setGlobalVariable("random_username", ("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4));
console.log(("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4))
// 0~9999из случайного целого числа
postman.setGlobalVariable("random_number",Math.round(Math.random()*9999));
console.log(Math.round(Math.random()*9999))

Просмотр фоновых результатов:

Идентификатор — это случайное целое число от 0 до 9999, а имя — случайная строка из 4 цифр.

Третий метод: используйте параметризацию файлов. Postman поддерживает параметризацию документов, например jmeter. В настоящее время поддерживаются следующие форматы файлов: документ Json, документ txt и документ CSV.

Предварительное условие: в этой статье в качестве примера используется текстовый документ, создаются тестовые данные в формате txt и сохраняются в полях eid и name. Разделяйте несколько данных запятыми (запятая на английском языке)

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

Ссылка на параметризованные переменные eid и name

Описание параметров операции:

  • Environment:Выберите запускизсреда,Окружающая среда в основном определяет переменные среды;
  • Iterations: Количество итераций варианта использования, то есть сколько раз необходимо выполнить выбранные в данный момент запросы;
  • Delay:Задерживать,Используется для установки времени работы между каждым запросом (в миллиметрах).,Если установлено,После завершения запроса он будет ждать соответствующее время перед запуском следующего запроса;
  • Log Responses:Запись журнала ответов,Это ограничительная настройка,По умолчанию записываются все запросы и журналы.,Он также может быть ограничен записью только ошибок или отсутствием регистрации вообще;
  • Data:Выберите файл данных,Это Postman При условии подхода, основанного на данных, данные специфичны для текущего Collection Переменные, используемые в запросах. поддерживать Csv и Json форматировать файлы;
  • Keep variable values:Сохранить значение переменной。если Collection Там есть скрипт для сброса значений переменных среды или глобальных переменных. По умолчанию он эффективен только для текущего запуска. Если эта опция отмечена, значения переменных, сброшенные в скрипте, будут сохранены, то есть будут изменены напрямую. Postman Заданное значение переменной в;
  • Run collection without using stored cookies:если Проверьте эту опцию,бегать Collection не будет использоваться, когда Postman из cookie менеджер;
  • Save cookies after collection run:бегатьназад,Чтобы сохранять файлы cookie во время работы, эта опция включена по умолчанию.

Посмотреть результаты:

Запускайте тестовые случаи

После выбора коллекции запустите Run в меню справа.

 Посмотреть результаты:

Установка инструмента отчета об испытаниях

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

Newman — это инструмент, разработанный на основе nodejs, который может запускать сценарии почтальона. С помощью Newman вы можете запускать и тестировать коллекции почтальонов непосредственно из команд.

Установите узел js

Скачать адрес:https://nodejs.org/en/download/

Чтобы проверить успешность установки, откройте cmd и введите node -v.

Установить Ньюман

Примечание. Прежде чем его можно будет успешно установить, newman должен находиться в том же файле, что и nodejs, иначе будет сообщено об ошибке.

Установите модуль html-отчетов.

Сначала экспортируйте тестовые примеры из почтальона.

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

Отчет о производственных испытаниях

Откройте cmd и найдите путь, по которому хранится вариант использования. Выполните некоторые из следующих команд

Способ 1 — выполнить экспортированные тестовые примеры:

Язык кода:javascript
копировать
newman run E:\postman_report\API document.postman_collection.json

Как видно из рисунка, детализация выполнения — 1 итерация, 5 запросов и 0 сбоев.

Метод 2. Создайте отчет о тестировании в формате HTML:

Язык кода:javascript
копировать
newman run E:\postman_report\API document.postman_collection.json -r html

Если это произойдет, это означает, что экспортированный тестовый пример json не поддерживает команду newman, поэтому импортируйте его повторно.

Выполните приведенную выше команду еще раз:

Войдя в E:\postman_report, я обнаружил, что отчет в формате html отсутствует. После ряда попыток я наконец заподозрил, что имя файла было на китайском языке. После изменения его на английский это удалось.

Как показано на рисунке:

Если не указать путь хранения отчета, по умолчанию будет создана папка newman.

Если вы хотите поместить его в другой каталог, вы можете сделать это:

Язык кода:javascript
копировать
E:\postman_report>newman run api.postman_collection.json --reporters html --reporter-html-export E:\postman_report

Посмотреть содержимое отчета:

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

HTML-отчет расширенной версии

Используйте пакет htmlextra для создания более сложных отчетов в формате HTML.

Способ использования тот же, что и у html. Вам необходимо установить htmlextra и ввести в командной строке:

Язык кода:javascript
копировать
npm install -g newman-reporter-htmlextra

Используйте команду для создания отчета:

Язык кода:javascript
копировать
E:\postman_report>newman run api.postman_collection.json -r htmlextra --reporter-html-export

Посмотреть отчет:

Просматривайте статистику, все запросы, неудачные варианты использования, пропущенные варианты использования и т. д. с помощью заголовка «Сводка», «Общее количество запросов», «Неудачные тесты» и «Пропущенные тесты».

Как показано ниже, все варианты использования:

Нажмите на каждый запрос, чтобы просмотреть подробную информацию, как показано ниже:

Вариант использования сбоя:

другой:

Установите количество повторений

Пример: Повторите 10 раз.

Язык кода:javascript
копировать
newman run APITest.postman_collection.json -n 10

Посмотреть другие доступные параметры

Язык кода:javascript
копировать
newman run -h

Полный набор содержимого для тестирования интерфейса почтальона в основном таков. Конечно, его также можно постоянно интегрировать с инструментом Jenkins.

Кодировать маленькие символы непросто, указывайте при перепечатке. Добро пожаловать в группу обмена знаниями по разработке автоматизированных тестов: 696400122, следите за редактором, полным полезной информации и будет постоянно обновляться. Учитесь и развивайтесь вместе~

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose