在接口測試中,我們對傳回結果的正确性判斷一般是基于響應封包的傳回内容進行斷言。但有些時候,按照正常的業務邏輯來說,一個請求傳回的内容是多種不同的。
比如:使用者注冊功能,注冊成功是正常的傳回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); }
内容僅供參考,請根據具體場景和接口設計邏輯,使用beanshell斷言。。。
轉載請注明出處,商用請征得作者本人同意,謝謝!!!