Jmeter 的断言(Assertion)用来判定系统响应的某些指标,比如响应长度、响应时间是否满足条件,Jmeter 提供了内置的断言类型,分别是 Size Assertion 和 Duration Assertion. 然而,更复杂的断言逻辑,比如判定某个字符串的长度,Jmeter 目前没有预先提供,这就需要更灵活的 JSR223 Assertion 组件。 期望目标 本文的期望目标是,断定一个名叫 Test_String 的字符串长度等于 10。 实现方法 使用 JSR223 Assertion 组件,并且 Script Language 一栏,选择 Groovy 语言 。 在组件的文本输入框中填入如下代码: def test_string; def failureMessage=""; def expectedLength=10; test_string = vars.get("Test_String"); if (test_string.length() == expectedLength){ AssertionResult.setFailure(false); }else{ AssertionResult.setFailure(true); failureMessage += "Length of Test_String is expected as "+ expectedLength; failureMessage += ", but is " + test_string.length(); AssertionResult.setFailureMessage(failureMessage); } 实现原理 JSR223 Assertion 预先初始化了 AssertionResult 对象,可以用来控制断言结果。如果满足失败条件,脚本需要做两件事: AssertionResult.setFailureMessage("错误消息") 和 AssertionResult.setFailure(true);