[英]Including function code snippet form a groovy file in JMeter groovy script
I have a big Groovy script in JMeter and I want few methods to be re-used in different places of my script. 我在JMeter中有一个很大的Groovy脚本,我希望在脚本的不同位置重用一些方法。 Below is what I tried.
下面是我尝试过的。
This is a groovy script where I have written a function that I want to call from Jmeter. 这是一个时髦的脚本,其中编写了要从Jmeter调用的函数。
Tools.groovy Tools.groovy
public void AssertValuesF(float Expected, float Actual, String PassMessage, String FailureMessage){
if(Expected==Actual){
log.info("****Assertion Successful****");
log.info("Actual: "+Actual+" Expected: "+Expected +"\n");
log.info(PassMessage);
}
else{
vars.put("AssertionFailure","true");
AssertionResult.setFailure(true);
vars.put("FailureMsg",vars.get("FailureMsg") + "\n****ASSERTION FAILURE****** \n"+FailureMessage + " || EXPECTED: "+ Expected + " || ACTUAL: "+Actual + "\n");
log.info("****ASSERTION FAILURE******");
// AssertionResult.setFailureMessage("****Assertion Failure****** "+FailureMessage + " Expected: "+ Expected + " Actual: "+Actual+"\n");
log.info(FailureMessage);
log.info("Actual: "+Actual+"Expected: "+Expected);
}
}
Below is my JMeter Groovy code where I am calling the function. 以下是我在其中调用该函数的JMeter Groovy代码。
File sourceFile = new File("D://TestScript//Tools.groovy");
Class groovyClass = new GroovyClassLoader(getClass().getClassLoader()).parseClass(sourceFile);
GroovyObject myObject = (GroovyObject) groovyClass.newInstance();
myObject.AssertValues("s","s","asdf","asdf");
The output gives this error, javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: log for class: Tools
输出给出此错误,
javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: log for class: Tools
This is probably because of 'log' object not available from Groovy. 这可能是因为Groovy无法使用'log'对象。 How can I solve this issue?
我该如何解决这个问题?
log
shorthand is available only for JSR223 Elements , in order to be able to use it you need to define it manually like it's done in JSR223TestElement class log
速记仅适用于JSR223 Elements ,为了能够使用它,您需要像在JSR223TestElement类中一样手动定义它
So amend your code to look like: 因此,将代码修改为:
import org.slf4j.Logger
import org.slf4j.LoggerFactory
public void AssertValuesF(float Expected, float Actual, String PassMessage, String FailureMessage) {
final Logger log = LoggerFactory.getLogger(getClass());
if (Expected == Actual) {
log.info("****Assertion Successful****");
log.info("Actual: " + Actual + " Expected: " + Expected + "\n");
log.info(PassMessage);
} else {
vars.put("AssertionFailure", "true");
AssertionResult.setFailure(true);
vars.put("FailureMsg", vars.get("FailureMsg") + "\n****ASSERTION FAILURE****** \n" + FailureMessage + " || EXPECTED: " + Expected + " || ACTUAL: " + Actual + "\n");
log.info("****ASSERTION FAILURE******");
// AssertionResult.setFailureMessage("****Assertion Failure****** "+FailureMessage + " Expected: "+ Expected + " Actual: "+Actual+"\n");
log.info(FailureMessage);
log.info("Actual: " + Actual + "Expected: " + Expected);
}
}
And you will be able to use it from Groovy scripts your way: 您将可以通过Groovy脚本使用它:
Also be aware that there is groovy.utilities
property which can be used to re-use your custom scripts in __groovy() function , you will need either add the next line to user.properties file: 另请注意,在__groovy()函数中有
groovy.utilities
属性可用于重复使用自定义脚本,您需要将下一行添加到user.properties文件中:
groovy.utilities=D:/TestScript/Tools.groovy
or pass it via -J
command-line argument like: 或通过
-J
命令行参数传递它,例如:
jmeter -Jgroovy.utilities=D:/TestScript/Tools.groovy -n -t test.jmx -l result.jtl
References: 参考文献:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.