【Jmeter】如何愉快的玩耍JSR223 Assertion

首先看下JSR223 Assertion支持的脚本类型
在这里插入图片描述
可以看出,支持的脚本还是蛮多,如何选择才会开心的玩耍呢?

一、使用场景及比较

使用JSR223 Assertion主要的场景无非就是对数据的结果进行验证,验证就必然需要对数据进行解析与访问,什么样的语言解析数据非常方便且易学呢?

作为一个专业的java,起初还尝试使用java去解析数据,奈何它是强类型,对于数据的处理并不是那么方便,而且在Jmeter的支持下使用起来感觉也并不是很友好,此刻javascript就显得游刃有余了

二、JSR223 Assertion使用教程

JSR223 常用内置变量

变量功能
ctx访问当前线程的上下文
prev访问当前的取样器运行结果
vars访问当前变量
props访问当前属性
sample访问当前取样器
log写日志
AssertionResult.setFailure断言结果(true/false)
AssertionResult.setFailureMessage断言失败提示内容

JSR223断言常用操作

  • 获取当前线程组里的变量
var expectedValue = vars.get("sourceShipperCode");
  • 获取属性值
var prop= props.get("prop");
  • 打印变量
log.info("预期值:"+expectedValue);
log.info("实际值:"+actual);

查看日志
在这里插入图片描述

  • 断言结果和断言错误提示
	AssertionResult.setFailureMessage("\n运单号:"+logisticCode+"\n预期值:"+expectedValue+"\n实际响应结果:"+shippers)
	AssertionResult.setFailure(true);
  • 获取取样器响应内容转换为字符串
var Responsedata = prev.getResponseDataAsString();
  • 将字符串解析为对象
var obj = eval('(' + Responsedata + ')');

三、Demo

下述脚本场景就是解析结果数据来与预期值比较进行断言

var expectedValue = vars.get("sourceShipperCode");
var Responsedata = prev.getResponseDataAsString();
//log.info("结果是" + Responsedata);
var obj = eval('(' + Responsedata + ')');
var shippers = obj.Shippers;
var logisticCode = obj.LogisticCode;
if(shippers == null || shippers.length == 0){
	log.info("运单号:"+logisticCode+"预期值:"+expectedValue+"实际值:"+null);
	AssertionResult.setFailureMessage("\n运单号:"+logisticCode+"\n预期值:"+expectedValue+"\n实际值:"+null)
	AssertionResult.setFailure(true);
}else{
	var actual = shippers[0].ShipperCode;
	var shippersStr = JSON.stringify(shippers);
	if(!shippersStr.contains(expectedValue)){
		log.info("运单号:"+logisticCode+"预期值:"+expectedValue+"实际响应结果:"+Responsedata);
		AssertionResult.setFailureMessage("\n运单号:"+logisticCode+"\n预期值:"+expectedValue+"\n实际响应结果:"+shippers)
		AssertionResult.setFailure(true);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值