是否有一种方法可以通过编程确定JMeter是否在';功能测试模式';?

是否有一种方法可以通过编程确定JMeter是否在';功能测试模式';?,jmeter,Jmeter,我的任务是实现一组JMeter测试,这些测试可以用于RESTAPI的性能或功能测试。为了做到这一点,我希望能够在性能测试期间跳过错误案例请求和更重的权重断言,以保持模拟流量的真实性,并降低运行测试的机器的开销。 现在我正在确定测试是否通过用户定义的变量作为性能测试执行。如果它的值为“true”,则跳过一些请求和断言。流是通过Groovy中的JSR223脚本控制的。 这个解决方案工作得很好,但是当JMeter已经有了“功能测试模式”复选框时,拥有这个UDV让我很恼火。我搜索了一种通过编程检查复选框

我的任务是实现一组JMeter测试,这些测试可以用于RESTAPI的性能或功能测试。为了做到这一点,我希望能够在性能测试期间跳过错误案例请求和更重的权重断言,以保持模拟流量的真实性,并降低运行测试的机器的开销。 现在我正在确定测试是否通过用户定义的变量作为性能测试执行。如果它的值为“true”,则跳过一些请求和断言。流是通过Groovy中的JSR223脚本控制的。
这个解决方案工作得很好,但是当JMeter已经有了“功能测试模式”复选框时,拥有这个UDV让我很恼火。我搜索了一种通过编程检查复选框状态的方法,但没有结果。是否有一种方法我遗漏了,或者我被半冗余UDV卡住了?

是的,如果您已经使用JSR223和Groovy,您可以从中获得
功能测试模式设置,如下所示:

import org.apache.jmeter.engine.StandardJMeterEngine
import org.apache.jmeter.testelement.TestPlan
import org.apache.jorphan.collections.HashTree
import org.apache.jorphan.collections.SearchByClass

import java.lang.reflect.Field

StandardJMeterEngine engine = ctx.getEngine()
Field test = engine.getClass().getDeclaredField("test")
test.setAccessible(true)
HashTree testPlanTree = (HashTree) test.get(engine)

SearchByClass<TestPlan> testPlanSearch = new SearchByClass<>(TestPlan.class)
testPlanTree.traverse(testPlanSearch)
Collection<TestPlan> testPlans = testPlanSearch.getSearchResults()
TestPlan testPlan = testPlans[0]

log.info('Functional test mode: ' + testPlan.isFunctionalMode())
import org.apache.jmeter.engine.StandardJMeterEngine
导入org.apache.jmeter.testelement.TestPlan
导入org.apache.jorphan.collections.HashTree
导入org.apache.jorphan.collections.SearchByClass
导入java.lang.reflect.Field
StandardJMeterEngine=ctx.getEngine()
字段测试=engine.getClass().getDeclaredField(“测试”)
test.setAccessible(true)
HashTree testPlanTree=(HashTree)test.get(引擎)
SearchByClass testPlanSearch=新的SearchByClass(TestPlan.class)
testPlanTree.traverse(testPlanSearch)
集合testPlans=testPlanSearch.getSearchResults()
TestPlan TestPlan=testPlans[0]
log.info('功能测试模式:'+testPlan.isFunctionalMode())
演示:


有关如何在JMeter脚本中使用Groovy的更多示例,请参见。

谢谢你,Dmitri,这对我很有用。谢谢你给我的备忘单。很抱歉反应太慢,我还有一个项目要灭火。