jmeter-13-使用JSR223断言(推荐)


前言

之前都在使用 BeanShell 前后置、断言等,但是查看官方文档时发现推荐使用 JSR223 其实 BeanShell 是 JSR223 里面的一种,下面我们继续了解下。
官网介绍:Apache JMeter - User’s Manual: Component Reference
在这里插入图片描述
翻译:强烈建议迁移到JSR223 Assertion+Groovy,以提高性能,支持新的Java功能以及对BeanShell库的有限维护。

通过了解 JSR223 是 Jmeter 可提供多种脚本语言实现你想实现的功能,如下图
在这里插入图片描述
可选择的脚本语言之多,当然还有其它例如python等


一、JSR 223 进行断言

1、例如 response json:

{
    
    "hello":"app1"}

2、JSR223 断言
响应code、响应内容包括header、cookie、body,我们便可根据以下内容进行断言。

// 获取http响应代码
def httpCode = prev.getResponseCode()

// 获取http响应body
def response = prev.getResponseDataAsString()

// 获取响应的所有header
def headers = prev.getResponseHeaders()

// 获取响应的cookie
def cookies = prev.getCookies()

3、http响应状态码断言

if(prev.getResponseCode().equals("200")){
    
     
	Failure=false;	// 断言成功
}
else{
    
    
	Failure=true;	// 断言失败
	FailureMessage="http code != 200";  // 自定义失败信息
}

4、http响应body断言

import groovy.json.JsonSlurper

// 获取响应
def response = prev.getResponseDataAsString()

// 解析为JSON响应
def jsonResponse = new JsonSlurper().parseText(response)
// JSON响应,获取所需的值
def value = jsonResponse.hello

// 进行断言期望值
def expValue = "app2"

// ① expValue in response            ② expValue == value
if (response.contains(expValue) || value.equals(expValue)){
    
    
    // 断言成功
    AssertionResult.setFailure(false)
} else {
    
    
    // 断言失败
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage("Assertion failed. Expected value: ${expValue}. Actual value: ${value}")
}


失败:
在这里插入图片描述


二、总结

上述写法虽看似简单,但是够用就好!
整体来说还是不错的,可以自由进行断言,对于一些复杂场景是需要用到的。

猜你喜欢

转载自blog.csdn.net/qq_42675140/article/details/131363103