如何将“空”变量发送到JMeter

时间:2016-05-16 18:34:02

标签: jmeter

我通过JMeter创建了一些功能测试。它非常庞大,但我无法处理一个简单的检查。 我在JS的帮助下使用BSF预处理器生成属性。只有当其他参数(让我们称之为“角色”)的值为1时,才应生成参数(让我们称之为“payment_fee”)。在这种情况下,我们将预生成的整数发布到payment_fee中,一切运行良好。但是如果role = 2那么我们应该在payment_fee中不发布任何内容。 问题是,我不知道如何对JMeter说:如果role = 1使用预先生成的payment_fee变量但是如果role = 2,则不应该使用此变量,因此只需为payment_fee发布空值。服务器等待一个整数,因此空字符串或NULL被拒绝。

更多说明: 我会尽力解释清楚。 这是我的代码的一部分

        var role = Math.floor(Math.random()*3+1)
        var paymentType = ["creditcard","cash"]
        var randomPay = installerType[Math.floor(Math.random()*installerType.length)];
        var payment = "";
        var paymentFee;
        if (role == 1){
            payment+=randomPay,
            paymentFee = Math.floor((Math.random() * 999) + 1) / 10.00
        }
vars.put("role", role);
vars.put("payment", payment);
vars.put("paymentFee", paymentFee);

如果role == 1我应该发布paymentFee值。像这样 - http://prntscr.com/b50kk1但是!如果role == 2 || role == 3我应该删除这个值,所以它应该是这个http://prnt.sc/b50l82

1 个答案:

答案 0 :(得分:0)

我不完全明白你的2个陈述发生冲突时你想要做什么:

  • 但如果role = 2,那么我们应该将 no 发布到payment_fee
  • 服务器等待整数,因此空字符串或NULL已被拒绝

您应该了解一些关于JMeter属性的内容:

  1. 属性是整个JVM的全局属性。设置属性后,它将“生效”,直到您退出JMeter。
  2. 所有Thread Groups的所有线程都可以访问属性。
  3. 因此,当您先前或另一个线程定义属性并且期望稍后不设置它时可能就是这种情况。

    从性能角度来看,BSF PreProcessor和JavaScript也不是最好的组合,考虑切换到JSR223 PreProcessor and Groovy language