当前位置: 首页 > 知识库问答 >
问题:

来自groovy的通过jeter采样器结果

董光霁
2023-03-14

我是JMeter新手,正在尝试编写一些Groovy采样器。我很难从脚本代码中找到如何与JMeter框架通信的文档/示例。我希望有人能为我提供一个很好的文档起点。

我在JSR223采样器中尝试了以下方法

import org.apache.jmeter.samplers.SampleResult;
println(" running test") 
SampleResult sr=new SampleResult();
sr.setResponseCode("300");
sr.setSuccessful(false);
sr.setErrorCount(2);
sr.setResponseData("This is the response");
ResponseCode=300
return sr;

但看起来好像没有效果。在结果树侦听器中查找,输出采样器结果为

Thread Name: Thread Group 1-1
Sample Start: 2016-03-22 17:38:07 CDT
Load time: 12
Connect Time: 0
Latency: 0
Size in bytes: 0
Headers size in bytes: 0
Body size in bytes: 0
Sample Count: 1
Error Count: 0
Response code: 200
Response message: OK

....

共有2个答案

欧君之
2023-03-14

JMeter 5.4 JSR223取样器

更多

//set Response Code
SampleResult.setResponseCode("201");
SampleResult.setSuccessful(false);
 
//set Response Message
SampleResult.setResponseMessage("This is message returned from JSR223 script");
 
//set Response Data
SampleResult.setResponseData("You will see this sentence in Response Data tab", "UTF-8");

println( "The Sample Label is : " + SampleResult.getSampleLabel() );
println( "The Start Time in miliseconds is : " + SampleResult.getStartTime() );
println( "The Response Code is : " + SampleResult.getResponseCode() );
println( "The Response Message is : " + SampleResult.getResponseMessage() );
尉迟正奇
2023-03-14

那样不行。

如果你看看JSR223采样器GUI,你会看到一些预定义的变量,比如:

  • ctx

因此,您已经有了一个实例化的SampleResult,它可以直接使用,如:

SampleResult.setResponseCode("300");
SampleResult.setSuccessful(false);
SampleResult.setErrorCount(2);
SampleResult.setResponseData("This is the response");

有关使用groovy脚本和脚本最佳实践的更多信息,请查看Beanshell vs JSR223 vsJavaJMeter脚本:您一直在等待的性能提升!引导。

 类似资料:
  • 你能建议如何用contains语法重写下面的动态名称代码吗?请参考所附的屏幕截图。多谢.

  • 我有一个关于如何处理请求的问题,例如: 我已经创建了一个带有一个线程组的测试计划。 设置用户数(线程):10 加速期:20 循环计数:永远 在这个线程组中,我创建了5个HTTP请求。 当我点击start时,我知道它以1个用户开始,到20秒时,它将拥有所有10个用户。 每个采样器(http请求)是否分配给一个用户?每个采样器是否按顺序点火?它会触发并行请求吗?我试图了解整体工作。

  • 我编写了一个自定义Java请求,它扩展了,以测量Java API调用的性能。然而,现在我需要测量作为同一用例一部分的多个API的性能。 即 需要为每个API调用(api1、api2、api3)获取Jmeter中的度量。但是,我无法拆分这些API调用,因为api2调用依赖于api1。(与api3相同,取决于api2)。如果我可以拆分,那么我可以为每个API编写不同的“Java采样器客户端”。因为所有

  • 我正在运行JMeter非GUI模式并生成仪表板,它正在工作, 下一步,我想将UUID添加到每个采样器,以便更轻松地在日志中找到我的请求 因此,采样器名称是:Login${uuid}、operation1${uuid}……而uuid变量之前已设置。 在GUI模式下,它有助于更快、更容易地发现问题。 当我执行非 GUI 模式时 基本上(我做了一个简短的测试),它分别为每个登录(和操作)创建一个报告,如

  • 我创建了一个定制的jmeter java采样器,它在循环中向HTTPendpoint发送请求并解析响应。希望多个线程在单个线程组中运行此采样器。 有人建议,我可以在安装线程组中使用beanshell采样器从csv读取,创建hashmap并使用之类的内容将其存储在JMeter属性中。有人能告诉我这是否是一个合理的方法吗?如果是,我如何访问自定义采样器中的特定JMeter属性? 我找到了这个答案:使用

  • 我在一个线程组中有几个采样器,每个采样器检索一条信息。然后我需要验证来自两个不同采样器的结果的一致性。特别是,我需要断言一个采样器响应中的字段是否等于JDBC响应中的字段。做这样的事情最好的方法是什么? 我曾考虑过向每个采样器添加一个beanshell后处理器,以便从每个样本中提取字段值并将其保存在两个变量中,然后添加一个访问这些变量的beanshell断言,但我想知道是否有更直接的方法。 在JM