在JMeter的HTTP请求帖子中使用cookie值

时间:2012-12-11 02:04:05

标签: jmeter session-cookies

我遇到的问题类似于这篇文章中的问题:JMeter; session cookie,但是从不同的角度来看。

相似性位于帖子的底部,OP写道:

  

如何...我可以为每个用户设置并提交一个唯一的cookie,其值是从第一个响应标头中提取的吗?

我们正在使用JMeter进行负载测试,需要让多个用户同时登录我们的电子邮件客户端。我们的网站(和测试计划)的工作方式是:

  • 输入用户名/密码,然后单击“登录”。
  • 点击电子邮件。
  • 在Cookie中接收身份验证令牌(用于保持登录电子邮件客户端)。
  • 在与电子邮件客户端交互时(打开文件夹,将电子邮件标记为已读等),请在帖子正文中发送身份验证令牌。

问题是auth令牌没有以一种可以在POST请求中使用的方式存储为值(并且因为身份验证令牌不是作为cookie发送的,我们不能简单地存储它并使用HTTP Cookie管理器发送它。 Cookie初始设置如下:

AUTH_TOKEN=(long string of letters, numbers, and underscores); Domain=.ourdomain.net; Path=/

我们已尝试以下方法从Cookie中提取auth令牌值:

  • 使用正则表达式提取器从“点击电子邮件”步骤的响应标头中提取值。我们尝试过两个正则表达式;两者都只是让JMeter在运行测试时使用默认的身份验证令牌值:
    • AUTH_TOKEN \ =(\ W +)\;
    • AUTH_TOKEN =([^] +);
  • 在user.properties中定义属性“CookieManager.save.cookies = true”(如用户手册所示)和“CookieManager.check.cookies = false”(如此线程中所示),然后使用“$ { COOKIE_AUTH_TOKEN}“在帖子中。
    • 使用其中一个或两个,JMeter将${COOKIE_AUTH_TOKEN}设置为帖子正文中的身份验证令牌值。
    • 我们知道$ {COOKIE_cookieName}是正确的格式,因为这与JMeter正在存储的其他Cookie一起使用。

我已阅读了许多帖子,但没有人处理过这个具体问题。几周前我刚开始学习如何使用JMeter,所以我不知道该怎么做,任何帮助都会非常感激。谢谢!

1 个答案:

答案 0 :(得分:6)

问题实际上是由于发送到服务器的错误请求引起的,然后发送空白响应。一旦我们拆除并重写了整个测试计划(我们使用的实际上是另一个测试计划的修改版本)并且在user.properties中使用了CookieManager.save.cookies = true,我们就可以使用$ {COOKIE_AUTH_TOKEN}并获取正确的价值。