如何使用JMeter';JSR223中Groovy类中的内部方法(vars.get()等)

如何使用JMeter';JSR223中Groovy类中的内部方法(vars.get()等),groovy,jmeter,jsr223,Groovy,Jmeter,Jsr223,我在JSR223预处理器中编写Groovy脚本,如下所示 import groovy.json.JsonSlurper; 类jmeter{ def parsingJSON(字符串文件名){ def payload=新文件(fileName).getText(); def jsonSlurper=新的jsonSlurper() def object=jsonSlurper.parseText(有效负载) vars.put(“myVar”,object.event\u id) 返回object.e

我在JSR223预处理器中编写Groovy脚本,如下所示

import groovy.json.JsonSlurper;
类jmeter{
def parsingJSON(字符串文件名){
def payload=新文件(fileName).getText();
def jsonSlurper=新的jsonSlurper()
def object=jsonSlurper.parseText(有效负载)
vars.put(“myVar”,object.event\u id)
返回object.event\u id
}
}
def running=new jmeter()

运行。PrjJSON(“C:/Ups/Pultult.JSON”)

如果您想以最小的更改保持代码结构,请考虑引入一个单独的类,该类包含静态变量,这些变量将在Groovy脚本中随处可见。p> 比如:

import groovy.json.JsonSlurper

class Global {
    static vars = [:]
}

Global.vars.jmeterVars = vars

class jmeter {


    def parsingJSON(String fileName) {

        def payload = new File(fileName).getText();
        def jsonSlurper = new JsonSlurper()
        def object = jsonSlurper.parseText(payload)

        Global.vars.jmeterVars.put("myVar", object.event_id)

        return object.event_id
    }
}

def running = new jmeter()
running.parsingJSON("C:/Users/payload.json")
更多信息:


如果要添加变量,需要将当前
JMeterVariables
对象传递给jmeter对象

以下代码将变量
aaa
添加到现有JMeter变量中

import org.apache.jmeter.threads.JMeterVariables;
class jmeter {
      JMeterVariables vars;
      jmeter(JMeterVariables vars) {
         this.vars = vars;
      }
public addvar() {
    vars.put("aaa","bbb");
}
}

def running = new jmeter(vars);
running.addvar();

因此Intellij Recognite
JMeterVariables
您必须从JMeter的lib\ext文件夹中添加
ApacheJMeter_core.jar
,谢谢@Dmitri,我刚刚尝试了您的想法,但出现了一个错误。我更新了我编写的代码和主线程中的错误消息。谢谢。你试过我的答案了吗?你能提供反馈吗?嗨,对不起,我没有注意到你修改了答案。我只是尝试一下,刚刚更新了上面线程中的结果。Intellij很好,但JMeter仍然不喜欢它。不知道为什么。谢谢:)