日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Jmeter之控制線程執行到某個結果時退出執行(第二種解決方案)

作者:慕城南風 更新時間: 2022-04-22 編程語言

業務背景

  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)-前置處理器-定時器-取樣器-后置處理器-斷言-監聽器

原文鏈接:https://blog.csdn.net/lovedingd/article/details/123578734

欄目分類
最近更新