在接口測試中,我們對返回結果的正確性判斷一般是基於響應報文的返回內容進行斷言。但有些時候,按照正常的業務邏輯來說,一個請求返回的內容是多種不同的。
比如:用戶注冊功能,注冊成功是正常的返回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斷言。。。