Jmeter日志不够丰富

时间:2017-12-18 13:22:38

标签: logging jmeter

我在Jmeter日志中面临一个问题,我一起运行10个测试,它们都具有相同的步骤但具有不同的参数。 当我检查Jmeter日志时,我看到了步骤中的异常,但是在哪个测试中没有提到,那么我怎么知道哪个场景正在解决这个问题呢?

2017-12-18 14:56:10,223 ERROR o.a.j.e.JSR223PostProcessor: Problem in JSR223 script, Short_tt_cid
javax.script.ScriptException: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method substring() on null object
    at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:158) ~[groovy-all-2.4.12.jar:2.4.12]
    at javax.script.AbstractScriptEngine.eval(Unknown Source) ~[?:1.8.0_141]

步骤short_tt_cid在所有测试中,当我用来打印ID时,它不会显示在日志中, 此外,问题就在于我一起进行几项测试,那么我怎么知道这是什么问题呢?如何让Jmeter告诉我日志中的更多信息,例如测试名称。我用{test_name}调用了这个步骤,它没有显示在日志中 问题是,如果我只运行一次测试,则所有测试都通过

2 个答案:

答案 0 :(得分:1)

这不是关于JMeter,而是关于你的Groovy代码。原因是您尝试在未定义的(或null)变量上调用substring()函数。

如果您需要更多信息 - 实现完全取决于您,可能的选择之一是将您的代码放在try block中:

try {
    def myObj = null
    myObj.substring()
}
catch (Exception ex) {
    log.info('Problem in ' + ctx.getCurrentSampler().getName() + ' in ' + ctx.getThreadGroup().getName() + ' Thread Group')
    throw ex
}

Groovy exception handling

这样,您将在 jmeter.log 文件中至少包含相关的Thread GroupSampler名称。在上面的示例中,ctx代表JMeterContext类实例,请查看JavaDoc以获取所有可用的方法和字段,并查看Apache Groovy - Why and How You Should Use It以获取有关JMeter中的Groovy脚本的更多信息

答案 1 :(得分:1)

您甚至可以在测试计划级别添加变量,这将保存测试计划文件,并在需要时使用函数TestPlanName函数使用它:

${__TestPlanName}
  

TestPlanName函数返回当前测试计划的名称(可以在包含计划中使用,以了解调用测试计划的名称)。

用于组名ctx.getThreadGroup().getName(),例如:

${__BeanShell(ctx.getThreadGroup().getName())} 

将其添加到每个线程组的1 User Parameters 变量中,并在需要时使用该变量