测试片段 Test Fragment
1.定义
测试片段:是一种特殊的测试组件,不会独立执行(需通过 Include Controller 或 Module Controller 被其他线程组调用),仅作为其他组件的引用资源。类似 “函数库” 或 “子模块”,用于封装可复用的测试逻辑(如常用请求、断言等)。
2.适用场景
公共测试逻辑:如登录流程、数据初始化等,使用Moudule Controller有条件地调用
参数化模板:封装参数化配置,供多个测试场景复用。
3.使用实例
登录封装:
1.创建 Test Fragment,添加登录请求、正则表达式(提取cookie)、Debug Sample(验证提取结果,可无)组件。
2.在其他线程组中使用 Include Controller 选择对应的 Test Fragment,注意Include Controller 位置必须放在 after login http请求之前,否则会先执行after login http
备注:
在 JMeter 中使用 Test Fragment 复用时,有两种方式可以选择(Include Controller路径配置)
- 在同一测试计划中复用(推荐)
- 保存为外部 JMX 文件复用
实例图:
正则表达式提取token参考:
代码示例:
<!-- 测试计划结构 -->
<TestPlan>
<!-- 1. 定义 Test Fragment -->
<TestFragment>
<HTTPSamplerProxy>
<!-- 登录请求 -->
</HTTPSamplerProxy>
<RegexExtractor>
<!-- 提取 Token -->
</RegexExtractor>
</TestFragment>
<!-- 2. 线程组1:订单模块测试 -->
<ThreadGroup>
<IncludeController>
<stringProp name="IncludeController.filename">Login Fragment</stringProp>
</IncludeController>
<HTTPSamplerProxy>
<!-- 订单请求,使用 ${token} -->
</HTTPSamplerProxy>
</ThreadGroup>
<!-- 3. 线程组2:用户管理测试 -->
<ThreadGroup>
<IncludeController>
<stringProp name="IncludeController.filename">Login Fragment</stringProp>
</IncludeController>
<HTTPSamplerProxy>
<!-- 用户管理请求 -->
</HTTPSamplerProxy>
</ThreadGroup>
</TestPlan>
备注:
使用参数传递实现跨线程组共享Token的方式:
- 登录线程组:
提取 Token → ${token}
BeanShell 后置处理器:props.put(“token”, vars.get(“token”)); - 订单线程组:
BeanShell 前置处理器:vars.put(“order_token”, props.get(“token”));
在请求头中使用:Authorization: Bearer ${order_token}