beanshell断言支持的变量有一下几种:
Read/Write(读/写):
-
Failure: 一个boolean值,用于表示断言是否失败。如果你在断言中将它设置为true,测试会被标记为失败。
-
FailureMessage: 一个字符串,用于设置断言失败时的错误消息。
-
SampleResult:
SampleResult
对象,表示关联的请求/响应的详细信息。可以通过这个对象获取请求和响应的信息,比如响应数据、响应码等。 -
vars: 一个
JMeterVariables
对象,用于读写JMeter变量。可以通过该对象设置或获取用户定义的变量,这些变量可以在测试执行期间保持状态。 -
props: 一个
JMeterProperties
对象,表示JMeter的全局属性。通过该对象,你可以读取和写入JMeter的全局属性。 -
log: 用于在JMeter控制台中打印日志消息的对象。通过这个对象,你可以输出调试信息或记录特定事件。
ReadOnly(只读):
-
Response[Data|Code|Message|Headers]:
SampleResult
对象的不同属性,提供了对响应数据、响应码、响应消息和响应头的只读访问。 -
RequestHeaders: 字符串,表示请求的头部信息。
-
SampleLabel: 字符串,表示样本的标签。这通常是请求的名称或描述。
-
SamplerData: 字符串,表示请求的数据。例如,在HTTP请求中,这可能是POST请求的参数。
-
ctx:
JMeterContext
对象,用于获取有关当前测试上下文的信息。包括线程组、用户定义的变量等。
这些变量允许你在BeanShell断言中灵活地访问和处理与测试执行相关的信息,以便更好地定制和优化测试脚本。
顺带举一个例子
断言状态码的例子,记住可千万别忘记引入
源码直接粘贴就可使用
import org.apache.jmeter.samplers.SampleResult;
String result = prev.getResponseDataAsString();
String httphead = prev.getResponseHeaders();
// 获取上一次执行的 SampleResult 对象
SampleResult prevResult = prev;
// 获取响应的状态码
String responseCodeStr = prevResult.getResponseCode();
int responseCode = Integer.parseInt(responseCodeStr);
// 期望的状态码
int expectedStatusCode = 200;
// 检查状态码是否为 200
if (responseCode == expectedStatusCode) {
Failure = false; // 断言通过
FailureMessage = "Response code is 200 (OK).";
} else {
Failure = true; // 断言失败
FailureMessage = "Response code is not 200. Actual: " + responseCode;
}