我们可以通过Beanshell控制Jmeter的组件吗?我想通过一个标志禁用所有断言。我该怎么做?

时间:2017-02-16 09:41:47

标签: jmeter

我们可以通过Beanshell控制Jmeter的组件吗?我想通过一个标志禁用所有断言。我该怎么做?

如果除beanShell以外的任何其他解决方案,请告诉我。

3 个答案:

答案 0 :(得分:1)

最简单的方法是使用Taurus工具作为包装器运行JMeter测试,它自然支持JMeter测试,而且它提供了一些不错的扩展。

特别是在您的情况下,您可以使用Modifications for Existing Scripts功能,允许启用或禁用测试元素

---
scenarios:
  modification_example:
    script: /your/jmeter/testplan.jmx       
    modifications:
      disable:  # Names of the tree elements to disable
      - Response Assertion
      - Duration Assertion

答案 1 :(得分:0)

据我所知,您无法使用BeanShell

禁用测试计划中的所有断言

解决方法如下:

  1. processAssertions配置元素中创建User Defined Variable变量。
  2. 将所有断言保留在控制器内。
  3. 将条件添加为${processAssertions}==true,因此当您将processAssertions值设置为true时,将会评估断言。设置true以外的任何值,使JMeter为忽略断言。
  4. 使用Bean Shell断言:

    前提条件:在processAssertions

    中创建TRUE(设置为User Defined Variables
    import org.apache.jmeter.assertions.ResponseAssertion; 
    log.info("hello"); 
    try{ 
        ResponseAssertion obj = new ResponseAssertion(); 
        if(${processAssertions}==TRUE) { // value accessed from UDV
            log.info("inside if");  
            obj.Enabled=false;
            SampleResult.setSuccessful(true); // set sample result to PASS, set to false to mark it failure.
    
        }   
    } catch(Exception e) { 
    
    }
    

    如果控制器 - 带断言: enter image description here

    如果控制器 - 没有断言: enter image description here

    参考文献:

    1. https://www.blazemeter.com/blog/how-use-jmeter-assertions-3-easy-steps
    2. http://jmeter.apache.org/usermanual/component_reference.html#assertions

答案 2 :(得分:0)

除了之前的答案,我还有两种方法:

1)将断言包装到If控制器中,然后 - 是的,设置一个标志var&检查If块。

2)通过JMeter API以编程方式运行JMeter - 在这里您可以以编程方式访问TestPlan中的每个元素。 虽然这种方式的记录非常糟糕,而API模型本身远非明确。

UPD:做后者的方法的一些线索

1)以下是主要参考:http://jmeter.apache.org/api/index.html

2)实例化引擎和加载属性:

StandardJMeterEngine jmeter = new StandardJMeterEngine();
JMeterUtils.loadJMeterProperties("/path/to/jmeter.properties");

3)实例化SaveService并加载你的计划(是的,保存服务是对此负责的)

SaveService.loadProperties();
File yourplan = new File("/path/to/yourplan.jmx");
HashTree planTree = SaveService.loadTree(yourplan);

4)在这里您可以访问&使用你的计划元素,通过HashTree,在子哈希树中检索测试元素(对于元素,参见第1页中提到的参考文献)&更改它们和/或测试结构(强制转换为TestElement必须足够enabling/disabling)。

5)完成后,剩下的就是直截了当:

jmeter.configure(planTree);
jmeter.run();

那应该是它。