如何将凭据传递到 JMeter 中服务器 IP 之前的 API 请求?
How to pass credentials into an API request preceding the server IP in JMeter?
我知道使用变量可以将用户名和密码传递给 API 调用,但它会附加到正在测试的请求中:
而不是例如。 https://api-server.com/test/somekey${USERNAME}${PWD}
我要发送:
https://${USERNAME}:${PWD}@api-server.com/test/somekey
当我尝试此操作时,如果我将冒号放在用户名和密码变量之间,它会抛出错误 null
;那么有没有办法将“:”传递到 HTTP 请求或替代解决方案中?
注意:测试的目的是通过 CSV 配置输入具有多个用户名、密码的 CSV 以检查访问权限等。我目前使用单个 HTTP 授权管理器来测试多个 API要求单个用户。但是,或者,我希望在套件中为许多其他用户 运行 进行一些 API 测试,那么我该如何实现呢?
只需使用 HTTP Authorization Manager(确保您使用 select BASIC_DIGEST 机制)作为您要传递凭据的请求的子项 - 在这种情况下,它只会影响一个要求。
如果您需要为多个请求提供授权 - 放置 HTTP 授权管理器,这样请求将处于同一级别或 HTTP 授权管理器的子级。
有关详细信息,请参阅 How to use HTTP Basic Authentication in JMeter 指南。
首先,我能使这个失败的唯一方法是使用 Java 作为 HTTP 实现,选择 HTTPClient4 它工作得很好。
我有两个 JMX 文件示例。两个测试证明了相同的结果。 CSV 包含 9 个有效的身份验证凭据和一个无效的凭据,只是为了确保这两种情况都有效。
示例 1。Link 到 JMX 测试和文件 - HTTP Auth Manager with CSV。
- HTTP 授权管理器
- CSV 数据集配置
- HTTP 请求(没有完整 url)
这很好用,唯一的技巧是您可以在 HTTP 授权管理器中使用 csv 中的 ${user} 和 ${pass}。
示例 2。Link 到 JMX 测试和文件 - HTTP Request with URL
- 完整的 HTTP 请求 url
- 使用 HTTPClient4
- CSV 数据集配置
这个要看你描述的情况,我只指定HTTPClient4
我在5台服务器上测试的测试用例运行,每台60users/threads,循环5次。因此产生了大约 3000 个请求。
user_name = "user"
user_password = "somepasword"
data = '{\"username\":\"'+user_name+'\",\"password\":\"'+user_password+'\"}'
print(data)
其中user_name和user_password分别是拥有用户名和密码的变量
下面是完整的URL
response = requests.post('https://xxx/api/v1/auth/token', headers=headers, params=params, data=data)
我知道使用变量可以将用户名和密码传递给 API 调用,但它会附加到正在测试的请求中:
而不是例如。 https://api-server.com/test/somekey${USERNAME}${PWD}
我要发送:
https://${USERNAME}:${PWD}@api-server.com/test/somekey
当我尝试此操作时,如果我将冒号放在用户名和密码变量之间,它会抛出错误 null
;那么有没有办法将“:”传递到 HTTP 请求或替代解决方案中?
注意:测试的目的是通过 CSV 配置输入具有多个用户名、密码的 CSV 以检查访问权限等。我目前使用单个 HTTP 授权管理器来测试多个 API要求单个用户。但是,或者,我希望在套件中为许多其他用户 运行 进行一些 API 测试,那么我该如何实现呢?
只需使用 HTTP Authorization Manager(确保您使用 select BASIC_DIGEST 机制)作为您要传递凭据的请求的子项 - 在这种情况下,它只会影响一个要求。
如果您需要为多个请求提供授权 - 放置 HTTP 授权管理器,这样请求将处于同一级别或 HTTP 授权管理器的子级。
有关详细信息,请参阅 How to use HTTP Basic Authentication in JMeter 指南。
首先,我能使这个失败的唯一方法是使用 Java 作为 HTTP 实现,选择 HTTPClient4 它工作得很好。
我有两个 JMX 文件示例。两个测试证明了相同的结果。 CSV 包含 9 个有效的身份验证凭据和一个无效的凭据,只是为了确保这两种情况都有效。
示例 1。Link 到 JMX 测试和文件 - HTTP Auth Manager with CSV。
- HTTP 授权管理器
- CSV 数据集配置
- HTTP 请求(没有完整 url)
这很好用,唯一的技巧是您可以在 HTTP 授权管理器中使用 csv 中的 ${user} 和 ${pass}。
示例 2。Link 到 JMX 测试和文件 - HTTP Request with URL
- 完整的 HTTP 请求 url
- 使用 HTTPClient4
- CSV 数据集配置
这个要看你描述的情况,我只指定HTTPClient4 我在5台服务器上测试的测试用例运行,每台60users/threads,循环5次。因此产生了大约 3000 个请求。
user_name = "user"
user_password = "somepasword"
data = '{\"username\":\"'+user_name+'\",\"password\":\"'+user_password+'\"}'
print(data)
其中user_name和user_password分别是拥有用户名和密码的变量
下面是完整的URL response = requests.post('https://xxx/api/v1/auth/token', headers=headers, params=params, data=data)