Как мне запустить скрипт Node-js в Artillery.io, не включая его в сценарий загрузки теста
Я должен загрузить тестовый сценарий, где пользователь добавляет контакт в свою адресную книгу. Для этого пользователь должен сначала войти в свою учетную запись.
У меня есть скрипт Nodejs "AutoLogin.js", который выполняет вход для пользователя, и файл json "contact.json", который имеет необходимые параметры конфигурации и параметры запроса POST для добавления контакта в адресную книгу.
Артиллерия запускает файл contact.json.
{
"config": {
"target": "target url",
"https": {
"tls": {
"rejectunauthorized": false
}
},
"phases": [
{
"duration": 10,
"arrivalRate": 2
}
]
},
"scenarios": [
{
"flow": [
{
"post": {
"url": "/addContact",
"contactInfo": {
"Name": "Davion",
"Mobile": "9289543654",
"Email": "Davion@gmail.com"
}
}
}
]
}
]
}
Данный код отправляет 2 почтовых запроса / сек, т.е. имитирует 20 пользователей, добавляющих контакт в адресную книгу в течение 10 секунд.
Мне нужно выполнить вход в систему до запуска этого кода, так как добавление контакта без входа в систему невозможно.
Кроме того, я не хочу, чтобы процесс входа в систему был включен в нагрузочный тест. Есть ли способ, которым я могу запустить свой скрипт 'AutoLogin.js' в файле 'contact.json', не включая его в нагрузочный тест, а затем запустив 'contact.json' с помощью Artillery?
1 ответ
Если вам нужно войти перед каждым запросом:
- в
config
раздел файла YAML, добавьтеprocessor
строка с указанным вами пользовательским JS. Обратите внимание, что ваш JS, как ожидается, будет стандартным модулем Node.js:
"config": {
"processor": "AutoLogin.js"
}
- в
post
действие вашего потока, добавьте строку дляbeforeRequest
крюк:
"post": {
"url": "/addContact",
"beforeRequest": "functionFromAutoLogin",
"contactInfo": {
"Name": "Davion",
"Mobile": "9289543654",
"Email": "Davion@gmail.com"
}
}
От: https://artillery.io/docs/http-reference/
См. Также https://artillery.io/docs/script-reference/ для использования CSV для тестовых данных.