Утверждение Postman и извлечение параметров были представлены ранее. Это для операции после запуска интерфейса. Итак, что нам нужно сделать перед запуском интерфейса? Нет сомнений, что именно параметризация может помочь нам заранее создать тестовые данные. Для некоторых интерфейсов шифрования и аутентификации нам нужно сделать это заранее и сделать запросы с этими параметрами, чтобы интерфейс мог пройти. Далее я расскажу о параметризации в реальном тестировании, пакетном выполнении тестовых случаев и формировании отчетов о тестировании.
представленный ранее《Использование инструмента Postman для тестирования интерфейса (2) — переменные среды и форматы параметров запроса》В статье говорилось о переменных средыизнастраивать,По сути это параметризация,Сейчас,Я представляю несколько других форм параметризации.
Первый тип: параметры, определяемые вами.
Следующий интерфейс подписи пользователя взят в качестве примера. Следующий код представляет собой локально разработанный интерфейс.
# Подпись пользователя
# Аутентификация: Подпись + отметка времени
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'。
Если вы хотите запросить зашифрованный интерфейс, вы должны заранее указать в параметрах запроса информацию, которую необходимо зашифровать, следующим образом:
Код:
//Устанавливаем текущую временную метку (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-значную временную метку, вы можете написать:
//Устанавливаем текущую временную метку (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
Видно, что встроенные функции относительно жесткие и не могут получить нужные нам случайные числа, поэтому мы все равно можем писать свои собственные сценарии.
нравиться:
// случайная строка
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
Описание параметров операции:
Посмотреть результаты:
После выбора коллекции запустите Run в меню справа.
Посмотреть результаты:
После завершения теста интерфейса выходные результаты теста необходимо отобразить в виде отчета. Postman также предоставляет отчеты, но разница в том, что необходимо установить некоторые необходимые инструменты — Newman.
Newman — это инструмент, разработанный на основе nodejs, который может запускать сценарии почтальона. С помощью Newman вы можете запускать и тестировать коллекции почтальонов непосредственно из команд.
Скачать адрес:https://nodejs.org/en/download/
Чтобы проверить успешность установки, откройте cmd и введите node -v.
Примечание. Прежде чем его можно будет успешно установить, newman должен находиться в том же файле, что и nodejs, иначе будет сообщено об ошибке.
Сначала экспортируйте тестовые примеры из почтальона.
Создайте папку и сохраните экспортированные варианты использования непосредственно в созданной папке, чтобы облегчить тестирование.
Откройте cmd и найдите путь, по которому хранится вариант использования. Выполните некоторые из следующих команд
Способ 1 — выполнить экспортированные тестовые примеры:
newman run E:\postman_report\API document.postman_collection.json
Как видно из рисунка, детализация выполнения — 1 итерация, 5 запросов и 0 сбоев.
Метод 2. Создайте отчет о тестировании в формате HTML:
newman run E:\postman_report\API document.postman_collection.json -r html
Если это произойдет, это означает, что экспортированный тестовый пример json не поддерживает команду newman, поэтому импортируйте его повторно.
Выполните приведенную выше команду еще раз:
Войдя в E:\postman_report, я обнаружил, что отчет в формате html отсутствует. После ряда попыток я наконец заподозрил, что имя файла было на китайском языке. После изменения его на английский это удалось.
Как показано на рисунке:
Если не указать путь хранения отчета, по умолчанию будет создана папка newman.
Если вы хотите поместить его в другой каталог, вы можете сделать это:
E:\postman_report>newman run api.postman_collection.json --reporters html --reporter-html-export E:\postman_report
Посмотреть содержимое отчета:
Этот отчет слишком грубый? Давайте посмотрим на использование других инструментов для создания красивых отчетов.
Используйте пакет htmlextra для создания более сложных отчетов в формате HTML.
Способ использования тот же, что и у html. Вам необходимо установить htmlextra и ввести в командной строке:
npm install -g newman-reporter-htmlextra
Используйте команду для создания отчета:
E:\postman_report>newman run api.postman_collection.json -r htmlextra --reporter-html-export
Посмотреть отчет:
Просматривайте статистику, все запросы, неудачные варианты использования, пропущенные варианты использования и т. д. с помощью заголовка «Сводка», «Общее количество запросов», «Неудачные тесты» и «Пропущенные тесты».
Как показано ниже, все варианты использования:
Нажмите на каждый запрос, чтобы просмотреть подробную информацию, как показано ниже:
Вариант использования сбоя:
другой:
Установите количество повторений
Пример: Повторите 10 раз.
newman run APITest.postman_collection.json -n 10
Посмотреть другие доступные параметры
newman run -h
Полный набор содержимого для тестирования интерфейса почтальона в основном таков. Конечно, его также можно постоянно интегрировать с инструментом Jenkins.
Кодировать маленькие символы непросто, указывайте при перепечатке. Добро пожаловать в группу обмена знаниями по разработке автоматизированных тестов: 696400122, следите за редактором, полным полезной информации и будет постоянно обновляться. Учитесь и развивайтесь вместе~