为每个JMeter HTTP请求添加会话ID

3
对于我的JMeter测试,我希望测试中的所有线程都使用一个共享的会话ID。会话ID在启动测试作业之前已知。如何为我的JMeter测试指定特定的JSessionId?
我尝试过在HTTP Cookie Manager(用户定义的cookie下方)、HTTP Request Defaults(请求中发送参数下方)中添加JSessionId参数,并且我尝试从Recording Controller的Pre-Processor选项卡中添加“HTTP URL重写修改器”。但是这些都没有起作用。哪一步是设置JMeter测试固定会话ID的最佳方法?
2个回答

2
您在尝试使用HTTP Cookie Manager时是正确的,这应该可以满足您的需求。
可能情况是Cookie管理器放置的位置不正确。为了影响所有请求,它应该位于测试计划或线程组的根目录。
更可能的是,当您添加用户定义的Cookie时,没有正确指定所有必需的值。这可能很棘手。您确定在domain字段中没有使用'http://'吗?

2

您需要在HTTP请求中添加jp@gc-JSON Path Extractor,特定的HTTP请求会在其响应数据中生成会话ID。 如果响应如下:

{"sessionId":"f5b06970-f00f-4b44-89c8-305738e19cba","loginDate":1483599209337} 

在JSON路径提取器中添加以下内容:
  1. 变量名称 - session(存储会话ID的变量)
  2. JSON表达式 - $.sessionId(这将根据JSON响应而变化)
  3. 默认值 - NOT_FOUND
现在下一步是使用名为“session”的变量。您可以在HTTP请求中使用它,需要在HTTP头管理器下传递会话ID,如 x-auth-token = ${session}

海报没有提到sessionId会作为JSON返回在响应中,另一个答案更有道理。 - hello_earth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接