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

tjo*_*dox 4 jmeter session-cookies

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

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

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

我们使用JMeter进行负载测试,需要让几个用户一次登录我们的电子邮件客户端.我们的网站(和测试计划)的工作方式是:

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

问题是auth令牌没有以一种可以在POST请求中使用的方式存储为值(并且因为auth令牌不是作为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 =([^] +);
  • 定义属性"CookieManager.save.cookies =真"(如由用户手册所建议的)和"CookieManager.check.cookies =假"(如在此线程建议)在user.properties,然后使用"$ {COOKIE_AUTH_TOKEN}"在邮政体内.
    • 使用其中一个或两个,JMeter将设置${COOKIE_AUTH_TOKEN}为帖子正文中的身份验证令牌值.
    • 我们知道$ {COOKIE_cookieName}是正确的格式,因为它与JMeter存储的其他cookie一起使用.

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

tjo*_*dox 6

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