jmeter:利用beanshell进行多重断言

简介: 在接口测试中,我们对返回结果的正确性判断一般是基于响应报文的返回内容进行断言。但有些时候,按照正常的业务逻辑来说,一个请求返回的内容是多种不同的。

在接口测试中,我们对返回结果的正确性判断一般是基于响应报文的返回内容进行断言。但有些时候,按照正常的业务逻辑来说,一个请求返回的内容是多种不同的。


比如:用户注册功能,注册成功是正常的返回message;该用户已注册,也是正常的业务逻辑。但响应报文的message和code/status往往是不一样的。


这篇博客,介绍下如何利用jmeter的beanshell断言,来处理这种请求。。。

 

一、响应断言


以用户注册功能作为例子,从下面两种场景来进行接口测试:


1、假设用户不存在,接口设计逻辑,注册成功返回的内容是这样:


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

响应断言应该如下配置:


640.png


返回的结果是这样:


640.png

 

2、假设用户已存在,那么在测试该功能时,使用响应断言,返回的内容如下:


640.png


从业务逻辑来说,无论注册成功还是用户已存在,这都是正常的业务场景。


但响应断言只能判断“是”或者“否”,如果需要验证业务正确而非技术正确,如何做呢?


我们可以利用beanshell断言,来满足我们的需求。

 

二、beanshell断言


还是针对上述场景,无论注册成功,还是用户已存在,我们都判定接口返回正确,那么beanshell断言,可以如下配置:


640.png


返回的结果是这样:


640.png


附: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断言。。。

相关文章
|
5月前
|
Java 测试技术 数据处理
JMeter前置处理器-Beanshell前置处理器详解
JMeter的Beanshell前置处理器允许用Java-like语法执行测试前的自定义逻辑,如参数化和数据处理。要添加它,右键点击HTTP请求,选择“添加”->“前置处理器”->“Beanshell前置处理器”。内置变量如`vars`, `ctx`, `log`和`props`提供与JMeter变量、上下文、日志和属性的交互。例如,`vars.get("key")`用于获取变量,`log.info()`用于记录日志。使用这些工具,测试者能增强性能测试的复杂性和准确性。
101 3
|
5月前
|
Java
Jmeter 的 Beanshell基本用法
Jmeter 的 Beanshell基本用法
|
JSON 搜索推荐 Java
Jmeter常用断言之BeanShell断言详解
BeanShell断言可以使用beanshell脚本来执行断言检查,可以用于更复杂的个性化需求,使用更灵活,功能更强大,但是要能够熟练使用beanshell脚本。在这里主要通过 Failure 和 FailureMessage来设置断言结果。 Failure = false;-----表示断言成功 FailureMessage = “......";---自定义的成功信息 Failure = true;----表示断言失败 FailureMessage="=".....";---自定义的失败信息
390 0
Jmeter常用断言之BeanShell断言详解
EMQ
|
Java 测试技术 Linux
JMeter 扩展开发:BeanShell 数据模拟实现及性能探讨
本文是开源测试工具JMeter扩展性开发教程第三期,讲解如何采用JMeter内置功能BeanShell实现动态生成测试数据,并探讨其与Java扩展JMeter的实现方式对比。
EMQ
197 0
JMeter 扩展开发:BeanShell 数据模拟实现及性能探讨
|
API Apache
Jmeter系列(65)- BeanShell 内置变量 ctx
Jmeter系列(65)- BeanShell 内置变量 ctx
181 1
Jmeter系列(65)- BeanShell 内置变量 ctx
|
安全 Java
Jmeter系列(67)- BeanShell 内置变量 props
Jmeter系列(67)- BeanShell 内置变量 props
195 0
Jmeter系列(67)- BeanShell 内置变量 props
|
Java API Apache
Jmeter系列(66)- BeanShell 内置变量 vars
Jmeter系列(66)- BeanShell 内置变量 vars
258 0
Jmeter系列(66)- BeanShell 内置变量 vars
|
存储
Jmeter 常用函数(19)- 详解 __BeanShell
Jmeter 常用函数(19)- 详解 __BeanShell
285 0
Jmeter 常用函数(19)- 详解 __BeanShell
|
API Apache
Jmeter系列(68)- BeanShell 内置变量 prev
Jmeter系列(68)- BeanShell 内置变量 prev
231 0
|
JavaScript Java Shell
Jmeter系列(63)- Beanshell 入门
Jmeter系列(63)- Beanshell 入门
223 0