1、${name}从哪里取数
2、User Defined Variables的数据是在哪一个过程中放进去的
3、如何通过beanshell将自己想要的数据放进去,然后在其他地方通过${name}的方式获取
第一个问题的答案:
${name}是在调用一个特殊的函数,函数解析器为:FunctionParser
解析过程如下方截图所示:
下方截图分支部分,直接返回function对象,此时会调用function的toString()方法
如上所述,最终会返回toString()方法的返回值。
toString()方法,其实是从ThreadLocal获得自己线程对应的threadContext对象,并从threadContext对象中取得JMeterVariables variables (JMeterVariables内部封装了一个map) vars.get(name)调用的map.get(name);
第二个问题的答案:
主线程预处理jml解析后的hashtree
针对User Defined Variables的处理
针对线程组的线程的处理
用主线程的context初始化子线程
第三个问题: