BeanShell斷言:根據響應的2個數據的比較結果來決定斷言


 

需求:目前有一個請求,請求的響應中有2個值,aaa和bbb,我們比較aaa和bbb,如果aaa大於bbb,則斷言通過,否則失敗。

1.添加一個Dummy Sampler,模擬請求。

2.添加2個正則表達式處理器,分別提取aaa和bbb的值。

3.添加BeanShell斷言。代碼如下:

//方式1:直接取aaa,bbb的值,並將結果進行比較
int x=${aaa};
int y=${bbb};

if(x<=y){
	Failure=true;
	FailureMessage="aaa小於等於bbb";
	}
//方式2:通過vars.get("變量名")取得字符串的值,然后通過Integer.parseInt()將其變為整型再進行比較
String  x = vars.get("aaa");
String  y = vars.get("bbb");

if(Integer.parseInt(x)<=Integer.parseInt(y)){
	Failure=true;
	FailureMessage="aaa小於等於bbb";
	//log.info("斷言失敗:aaa小於等於bbb");
}

4.在查看結果樹中查看結果如下

5.思考:如果aaa,bbb的值帶有小數呢,上述兩種方式還可以嗎?

比如說把請求的響應修改為{"aaa":"1.9","bbb":"1.1"},則

通過方式1運行結果,還是斷言失敗,因為本來aaa大於bbb,取整后,aaa等於bbb了;

通過方式2運行結果,報錯:Error invoking bsh method: eval Sourced file: inline evaluation of: ``String  x = vars.get("aaa"); String  y = vars.get("bbb");  if(Integer.parseInt(x . . . '' : Method Invocation Integer.parseInt 。

顯然不可以。

因此,當需要比較的兩個值可能是小數時,我們需要用方式3或方式4來寫斷言。

//方式3:
double x=${aaa};
double y=${bbb};

if(x<=y){
	Failure=true;
	FailureMessage="aaa小於等於bbb";
	}
//方式4:
String  x = vars.get("aaa");
String  y = vars.get("bbb");

if(Double.parseDouble(x)<=Double.parseDouble(y)){
	Failure=true;
	FailureMessage="aaa小於等於bbb";
	log.info("斷言失敗:aaa小於等於bbb");
}

說白了,就是將int換成double,Integer.parseInt()換成Double.parseDouble()了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM