我已经承担了实现一组JMeter测试的任务,这些测试可用于REST api的性能或功能测试。为此,我希望能够在性能测试过程中跳过错误案例请求和较重的声明,以保持模拟流量的真实性,并使运行测试的计算机的开销较低。 现在,我正在确定是否通过用户定义的变量将测试作为性能测试执行。如果其值为“ true”,则将跳过某些请求和断言。流是通过Groovy中的JSR223脚本控制的。 该解决方案效果很好,但是当JMeter已经具有“功能测试模式”复选框时,让UDV困扰我。我无济于事寻找一种以编程方式检查该复选框状态的方法。有什么办法可以让我丢失,或者我是否坚持使用半冗余的UDV?
答案 0 :(得分:0)
就是说,假设您已经使用JSR223和Groovy,则可以从TestPlan class获得Functional Test Mode
设置,如下所示:
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())
演示:
有关如何在JMeter脚本中使用Groovy的更多示例,请参见The Groovy Templates Cheat Sheet for JMeter。