1. 程式人生 > 實用技巧 >jmeter(二十八)利用beanshell進行多重斷言

jmeter(二十八)利用beanshell進行多重斷言

在介面測試中,我們對返回結果的正確性判斷一般是基於響應報文的返回內容進行斷言。但有些時候,按照正常的業務邏輯來說,一個請求返回的內容是多種不同的。

比如:使用者註冊功能,註冊成功是正常的返回message;該使用者已註冊,也是正常的業務邏輯。但響應報文的message和code/status往往是不一樣的。

這篇部落格,介紹下如何利用jmeter的beanshell斷言,來處理這種請求。。。

一、響應斷言

以使用者註冊功能作為例子,從下面兩種場景來進行介面測試:

1、假設使用者不存在,介面設計邏輯,註冊成功返回的內容是這樣:

{"code":200,"msg":"success"},"status":200}

響應斷言應該如下配置:

返回的結果是這樣:

2、假設使用者已存在,那麼在測試該功能時,使用響應斷言,返回的內容如下:

從業務邏輯來說,無論註冊成功還是使用者已存在,這都是正常的業務場景。

但響應斷言只能判斷“是”或者“否”,如果需要驗證業務正確而非技術正確,如何做呢?

我們可以利用beanshell斷言,來滿足我們的需求。

二、beanshell斷言

還是針對上述場景,無論註冊成功,還是使用者已存在,我們都判定介面返回正確,那麼beanshell斷言,可以如下配置:

返回的結果是這樣:

附:beanshell斷言程式碼demo:

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSON;

String result=SampleResult.getResponseDataAsString();

JSONObject jsonObject=JSON.parseObject(result);
int code=jsonObject.getIntValue("code");
JSONObject data=jsonObject.getJSONObject("data");

log.info("code:"+code);

if(code==200||code>=20000000){
    SampleResult.setSuccessful(true);
}