JMeter BeanShell断言使用“字节大小”数据

时间:2015-07-17 09:43:54

标签: jmeter assertions

我有这样的BeanShell断言代码:

final String response = SampleResult.getResponseDataAsString();
final String expectedExceptionText = "numberOfFeatures=\"0\"";

if (response.contains(expectedExceptionText)) {
   Failure = true;
   FailureMessage = "At least one feature expected ";
}

我想检查'size in bytes'响应是否大于384B。如果没有那么我需要在一些变量中计算低于384的所有响应。有没有办法在我的断言代码中使用响应'字节大小'?我的意思是我不知道该怎么做所以请告诉我。

//修改

我一直在尝试使用方法getBytes但是尽管我需要导入它但它不起作用。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您不需要BeanshellAssertion来执行此操作:

如果您仍想使用Beanshell,那么:

  

if(SampleResult.getResponseData()。length> 384)

答案 1 :(得分:0)

我不想只检查。我已经使用大小和响应断言来检查我是否得到了正确的响应,但我想计算空的响应(我正在执行getImage请求)并且它可能返回200响应但它仍然可以为空。我想知道发生这种情况并同时遇到变量。以下是我想要的例子:

1st request - image ok 200.  variable =0;
2nd image ok 200. variable = 0
3rd no image, 200, variable =1;
etc.

我需要检查传递的数据(输入参数)有多少是空的。 我检查了没有图像的响应有384个字节所以我想以这种方式检查它。我尝试使用getBytes()方法,但它在BeanShell中不起作用。我收到了一些错误 //编辑

我使用了你的方法,似乎有效。谢谢:)

答案 2 :(得分:0)

如果是Beanshell Assertion,您可以通过至少两种方式获得响应大小(以字节为单位):

ResponseData.length
SampleResult.getResponseData().length

两者都会产生包含父采样器响应的字节数组 - byte[]

如下所示:

if (ResponseData.length > 384) {
    //do what you need
}

应解决您的使用案例。

有关JMeter中Beanshell脚本的高级信息,请参阅How to use BeanShell: JMeter's favorite built-in component指南