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

文章目录

  • 前言
  • 一、JSR 223 进行断言
  • 二、总结


前言

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

通过了解 JSR223 是 Jmeter 可提供多种脚本语言实现你想实现的功能,如下图
jmeter-13-使用JSR223断言(推荐)_第2张图片
可选择的脚本语言之多,当然还有其它例如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}")
}

jmeter-13-使用JSR223断言(推荐)_第3张图片
失败:
jmeter-13-使用JSR223断言(推荐)_第4张图片


二、总结

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

你可能感兴趣的:(jmeter,java,开发语言)