gpt4 book ai didi

json - 如何在 Artillery.i.o 中运行 Node-js 脚本而不将其包含在负载测试场景中

转载 作者:太空宇宙 更新时间:2023-11-03 22:28:15 24 4
gpt4 key购买 nike

我要对用户在地址簿中添加联系人的场景进行负载测试。为此,用户必须首先登录其帐户。
我有一个为用户执行登录的 Nodejs 脚本“AutoLogin.js”和一个 json 文件“contact.json”,其中包含必要的配置和 POST 请求参数在地址簿中添加联系人。
Artillery 运行“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 个 Post 请求,即模拟 20 个用户在 10 秒的时间内将联系人添加到地址簿。
在此代码运行之前,我需要执行登录,就像在不登录的情况下添加联系人一样不可能。
另外,我不希望登录过程包含在负载测试中。有没有办法可以在“contact.json”文件中运行“AutoLogin.js”脚本,而不将其包含在负载测试中,然后使用 Artillery 运行“contact.json”?

最佳答案

如果您需要在每个请求之前登录:

  1. 在 YAML 文件的 config 部分中,添加指定了自定义 JS 的 processor 行。请注意,您的 JS 应该是标准的 Node.js 模块:
"config": {
"processor": "AutoLogin.js"
}
  • 在流程的 post 操作中,为 beforeRequest Hook 添加一行:
  • "post": {
    "url": "/addContact",
    "beforeRequest": "functionFromAutoLogin",
    "contactInfo": {
    "Name": "Davion",
    "Mobile": "9289543654",
    "Email": "Davion@gmail.com"
    }
    }

    来自:https://artillery.io/docs/http-reference/#advanced-writing-custom-logic-in-javascript

    另请参阅https://artillery.io/docs/script-reference/#payload-files使用 CSV 来存储测试数据。

    关于json - 如何在 Artillery.i.o 中运行 Node-js 脚本而不将其包含在负载测试场景中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42196637/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com