业务背景

  1. 触发测试用例,大约需要执行10分钟
  2. 查询执行的commitId的测试用例的执行结果
  3. 如果通过了则直接停止测试用例,或beanshell 异常也要停止,否则获取不到结果,无限执行也是没有意义的,否则继续循环执行(设置最大的重试次数)

延迟执行request

  • 如果是1和2中间需要停止10分钟,可以在 1和2中间新增一个request-3,并且配置timer的时长
  • 定时器是在每个sampler(采样器)之前执行的,而不是之后。不管这个定时器的位置放在sampler之后,还是之下,它都在sampler之前得到执行。
  • 定时器是有作用域的;当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;
  • 如果希望定时器仅应用于其中一个sampler,则把该定时器作为子节点加入;
  • 如果希望在sampler执行完之后再等待,则可使用取样器里面的测试活动(Test Action);
  • 更优雅的实现步骤间的停顿的方案是 Flow Control Action

提取request的返回值

样例:

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONPath;
import java.util.List;
import org.apache.jmeter.threads.JMeterContextService;
try{//获取获取请求的返回值String response_data = prev.getResponseDataAsString();//日志打印获取请求的返回值log.info("---response_data---" + response_data);//将返回值转换成JSON对象JSONObject data_obj= JSON.parseObject(response_data);  log.info("------data_obj--------" + data_obj.toString());//获取JSON中data列表JSONObject data_object = data_obj.getJSONObject("data");log.info("---data_arr---" + data_object);//获取Province数组的长度boolean flag=data_object.getBoolean("flag");if(flag){vars.put("test_flag","true");Failure=false;//集测通过了,直接终止脚本的执行JMeterContextService.getContext().getThread().stop();}log.info(vars.get("test_flag"));
}catch(Exception e){log.info("beanshell failed",e);JMeterContextService.getContext().getThread().stop();
}

拓展

测试计划中的元件执行顺序依次为:

配置元件(CSV Data Set Config)-前置处理器-定时器-取样器-后置处理器-断言-监听器

Jmeter之控制线程执行到某个结果时退出执行(第二种解决方案)相关推荐

  1. Jmeter之控制线程执行到某个结果时退出执行

    目的 今天做压力测试时,涉及到一个场景,需要先执行A场景,在执行到status=2时,在执行B场景,然后停止运行. 遇到的困难 status开始为1,需要一段时间后变为2,且不确定需要等待多久才会变为 ...

  2. java web 启动时执行_java Web 启动时自动执行代码的几种方式

    Web容器启动后执行代码的几种方式,其执行顺序为:4===>5===>1===>2===>3,即指定init-method的Bean开始执行,接着实现spring的Bean后置 ...

  3. js 跳转到指定位置 高德地图_JS控制div跳转到指定的位置的几种解决方案总结

    总结一下自己在写这个需求遇到的问题,相信大家应该是经常遇到的.即要求滚轮滚动到指定的位置.先看下基本的解决方案. 1.给链接a加个#的方式来实现跳转.(锚点方法)这里直接贴下代码: div1 div2 ...

  4. iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用(上)

    2017-07-08 remember17 Cocoa开发者社区 目的 本文主要是分享iOS多线程的相关内容,为了更系统的讲解,将分为以下7个方面来展开描述. 多线程的基本概念 线程的状态与生命周期 ...

  5. join控制线程的执行循序 T1 - T2 - T3

    /*** 控制线程的执行循序 T1 -> T2 -> T3* join实现*/ public static void join(){Thread t1 = new Thread(() -& ...

  6. C#中控制线程池的执行顺序

    在使用线程池时,当用线程池执行多个任务时,由于执行的任务时间过长,会导制两个任务互相执行,如果两个任务具有一定的操作顺序,可能会导制不同的操作结果,这时,就要将线程池按顺序操作.下面先给一段代码,该代 ...

  7. jmeter 实际运行线程数达不到设定值_Jmeter技术知识-常用组件实战演示(2020年最新)...

    在上一篇:Jmeter系列之简介与环境安装,主要介绍Jmeter简介.环境安装及接口实战.一般在实际接口自动化过程中,会同时包含多个组件共同完成工作. 工欲善其事,必先利其器,以下介绍Jmeter一些 ...

  8. android子线程没有运行完,android假如主线程依赖子线程A的执行结果,如何让A执行完成,之后主线程再往下执行呢?...

    /* String ObjectResult="原先的结果"; //使用VOLLY框架(与问题无关) JsonObjectRequest jsonObjectRequest = n ...

  9. java condition详解_Java使用Condition控制线程通信的方法实例详解

    Java使用Condition控制线程通信的方法实例详解 发布于 2020-4-20| 复制链接 摘记: 本文实例讲述了Java使用Condition控制线程通信的方法.分享给大家供大家参考,具体如下 ...

最新文章

  1. statsmodels 笔记:自回归模型 AutoReg
  2. TensorFlow MNIST CNN LeNet5模型
  3. 当代年轻人加班报告!
  4. mfc 使打开的窗口至于最顶层_MFC界面开发控件BCG帮助文档——功能区设计器(2)
  5. php date()时间不对,PHP DATE( )函数与系统时间差8小时解决办法
  6. 编译原理教程_9 运行时存储组织
  7. margin,padding之间的比较
  8. 从零开始的FPGA学习5-同步复位D触发器、异步复位D触发器
  9. python爬虫获取城市天气信息
  10. python清空画布_Python3 tkinter基础 Canvas delete 删除画布中的所有图形
  11. Domain Adaptation and Graph Neural Networks
  12. 如何使用K8S实现自动化部署
  13. Volatility内存取证使用
  14. 大趋势:科技赋能产业
  15. 无人驾驶技术的突破与挑战
  16. 按照奇原则配置汉明码_舞台灯光设计的原则和工艺要求
  17. 多媒体技术基础知识——简要知识点
  18. 谷歌地图高清卫星地图、电子地图和地形图有什么区别?
  19. 百度开放平台(文本转化音频)
  20. 《深度学习导论及案例分析》一导读

热门文章

  1. 能被选为2021最佳开源项目的WEB框架究竟有多棒?
  2. 轻量级 Kubernetes 发行版 k3s 1.0.0 发布!
  3. 「图解」ThreadLocal 在并发问题中的应用
  4. 还在使用 SimpleDateFormat?你的项目崩没?
  5. Spring Cloud构建微服务架构:消息驱动的微服务(消费分区)【Dalston版】
  6. led动态显示 c语言,单片机LED点阵的纵向移动(动态显示)
  7. mobile former测试
  8. python 路径双斜杠问题
  9. torch yolov3训练性能优化
  10. 阿里开源自主研发的 DFSMN 语音识别模型,引谷歌论文引用