文章目录
- 前言
- 一、JSR 223 进行断言
- 二、总结
前言
之前都在使用 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}")
}
失败:
二、总结
上述写法虽看似简单,但是够用就好!
整体来说还是不错的,可以自由进行断言,对于一些复杂场景是需要用到的。