如何在JMeter中实现HTTP Sampler的复用?
JMeter复用指定HTTP Sampler的实现方案
下面是三种最常用的无冗余实现方案,可根据你的使用场景选择:
模块控制器方案(单脚本内复用首选)
操作步骤:- 把需要复用的初始化HTTP Sampler放到「测试片段(Test Fragment)」节点下,或者放到线程组下的独立禁用逻辑控制器中(避免脚本运行时默认自动执行)
- 在第三个HTTP请求的前置位置,添加「模块控制器(Module Controller)」,在控制器的下拉选择框中选中你要复用的初始化HTTP Sampler的路径即可
优势:完全复用原Sampler的所有配置,后续修改原Sampler的参数、头信息等,所有调用位置会自动同步生效,零冗余维护成本极低。
Include控制器方案(跨脚本复用首选)
操作步骤:- 把需要复用的初始化HTTP Sampler单独保存为一个独立的
.jmx脚本文件,文件中仅保留该请求及它依赖的配置元件即可 - 在需要调用该请求的位置(包括其他测试脚本中)添加「Include控制器(Include Controller)」,指定你保存的独立
.jmx文件的路径即可
优势:适合多套测试脚本都需要用到公共初始化/登录请求的场景,全局仅维护一份公共脚本即可,修改后所有引用的脚本都会同步生效。
- 把需要复用的初始化HTTP Sampler单独保存为一个独立的
JSR223组件动态调用方案(有条件触发场景首选)
如果需要根据前序请求的返回结果判断是否需要触发初始化请求,可以使用JSR223前置处理器/采样器通过代码动态调用,参考代码示例:// 按名称获取要复用的HTTP Sampler对象 def initSampler = ctx.getThreadGroup().getSamplerController().getElementByName("你的初始化请求名称") // 执行该请求 initSampler.sample(null)优势:支持自定义判断逻辑,灵活度最高,适合复杂的业务测试场景。
注意事项
- 复用请求的返回值如果需要传递给后续请求,单线程组内使用
vars.put()/vars.get()处理局部变量即可,跨线程组场景使用props.put()/props.get()处理全局变量 - 如果不同调用场景需要修改复用请求的部分参数,可以在调用位置前添加用户定义变量或前置处理器,动态覆盖原Sampler中的参数值即可
内容的提问来源于stack exchange,提问作者walker
相关产品推荐
相关产品推荐

