我已经开始使用'Artillery.io进行负载测试。这里介绍如何在email, password
中传递认证参数,例如load-test.yml
,下面在发送请求时抛出了401
一个未经授权的错误。有人可以指导我如何传递诸如email and password
config:
target: 'https://test-url.com'
phases:
- duration: 70
arrivalRate: 10
defaults:
headers:
Content-Type: application/json
scenarios:
- flow:
- get:
url: /findAMembership
headers:
Content-Type: application/json
- post:
url: /auth
body: '{"username":"test@test.com", "password": "some_testpassword"}'
headers:
Content-Type: application/json
答案 0 :(得分:0)
与脚本有关的事情使阅读,故障排除甚至解决问题变得更加容易。
首先,关于401
问题,我认为您的请求不符合身份验证端点要求。请检查端点。 (例如如何正常使用auth
?)
我假设端点接受json
请求(username
和password
)并响应Bearer token
,您可以尝试使用此方法(改用json
body
,并定义key-value
):
- post:
url: "/auth"
json:
username: "test@test.com"
password: "some_testpassword"
headers:
Content-Type: "application/json" # no need this, you have specified the default Content-Type
capture:
json: "$.token"
as: "token" # Should have this, read below
还有一条便条,您发送了一个auth
请求,但没有捕获任何请求,这没有任何意义。记住要捕获响应(例如Bearer token
等)以链接需要身份验证的请求。 Read more
答案 1 :(得分:0)
如果要从文件读取用户,则可以指定有效负载路径及其字段。这也使您能够测试有多个用户和/或失败尝试的方案。
config:
target: "<TARGET>"
payload:
- path: "./users.csv"
fields:
- "username"
- "password"
order: sequence
skipHeader: true
- path: "./products.csv"
fields:
- "id"
order: sequence
skipHeader: true
phases:
- duration: 60
arrivalRate: 20
scenarios:
- flow:
- post:
url: "/login"
json:
username: "{{ username }}"
password: "{{ password }}"
通过这种方式,用户名和密码将从指定的CSV文件中读取,并通过json主体对象POST
到<TARGET>/login
端点
{
username: <READ USERNAME>
password: <READ PASSWORD>
}
一个示例CSV文件可能看起来像
username,password
some1@example.com,super1
email@example.com,secret