如何将凭据传递到JMeter中服务器IP之前的API请求?

时间:2015-02-11 18:17:44

标签: 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测试,那么我怎么能实现这个目标呢?

2 个答案:

答案 0 :(得分:1)

只需使用HTTP Authorization Manager(确保选择BASIC_DIGEST机制)作为要传递凭据的请求的子代 - 在这种情况下,它只会影响一个请求。

如果您需要为多个请求提供授权 - 请放置HTTP授权管理器,以便请求位于HTTP授权管理器的同一级别或子级上。

有关详细信息,请参阅How to use HTTP Basic Authentication in JMeter指南。

答案 1 :(得分:1)

首先,我唯一可以解决这个问题的方法就是使用Java作为HTTP实现,选择HTTPClient4就可以了。

我有两个JMX文件示例。两项测试都证明了相同的结果。 CSV包含9个有效的身份验证信息和一个无效信用卡,只是为了确保两个案例都有效。

示例1.链接到JMX测试和文件 - HTTP Auth Manager with CSV

  • HTTP授权管理器
  • CSV数据集配置
  • HTTP请求(没有完整网址)

这很好用,唯一的技巧是您可以在HTTP授权管理器中使用来自csv的$ {user}和$ {pass}。

示例2.链接到JMX测试和文件 - HTTP Request with URL

  • 带有完整网址的HTTP请求
  • 使用HTTPClient4
  • CSV数据集配置

这是针对您描述的情况,我只是指定HTTPClient4 我测试的测试用例在5台服务器上运行,每台服务器有60个用户/线程,循环5次。因此生成了大约3000个请求。