我正在使用JSON进行API测试。
Test Plan
Thread Group 1 (run once)
- Login
Thread Group 2 (I will run this multiple times)
- Do some opeartion
Thread Group 3 (run once)
- Logout
我想将sessionid
从线程组1传递给线程组2和3。
答案 0 :(得分:0)
要提取sessionId,请使用Regular Expression Extractor
答案 1 :(得分:0)
您可以使用以下代码使用Jmeter中的 beanshell后处理器侦听器元素将值传递给另一个线程组
保存变量的Behellhell代码
import org.apache.jmeter.util.JMeterUtils;
JMeterUtils.setProperty("propname", "value");
从另一个线程组中检索变量的Beanshell代码
import org.apache.jmeter.util.JMeterUtils;
vars.put("localvariable", JMeterUtils.getProperty("propname"));
var testVar=vars.get("localvariable");
log.info("@ NEXT THREAD GROUP value="+testVar);
使用Jmeter's getprperty(),setproperty() API
传递值的代码。您也可以使用JMeter插件进行线程间通信。
答案 2 :(得分:0)
How to use Beanshell指南包含在不同线程组之间共享Cookie的示例,向下滚动到Advanced Examples
部分。
如果你"会话"假定基于cookie的会话您需要执行以下操作:
通过将 jmeter.properties 文件中的CookieManager.save.cookies
属性设置为true
告诉Cookie管理器将Cookie保存为变量,该文件位于JMeter的/ bin文件夹下安装或将其作为命令行参数传递,如下所示
jmeter -JCookieManager.save.cookies=true -n ... -t ... -l ...
答案 3 :(得分:0)
另一种方法是只有一个线程组而不是三个,并将CookieManager
添加到线程组。让Loop Controller多次运行该操作。
您的测试可以结构化为:
Test Plan
Thread Group
- Cookie Manager
- Login
- Loop Controller (run this multiple times)
- Do some operation
- Logout