我通过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
答案 0 :(得分:0)
我不完全明白你的2个陈述发生冲突时你想要做什么:
您应该了解一些关于JMeter属性的内容:
因此,当您先前或另一个线程定义属性并且期望稍后不设置它时可能就是这种情况。
从性能角度来看,BSF PreProcessor和JavaScript也不是最好的组合,考虑切换到JSR223 PreProcessor and Groovy language。