Web services 在测试的不同阶段比较两个变量

Web services 在测试的不同阶段比较两个变量,web-services,jmeter,automated-tests,assertions,beanshell,Web Services,Jmeter,Automated Tests,Assertions,Beanshell,我在JMeter中有这个方案: 获取放在varmainBalance中的余额值(Get) 进行充电(POST) 验证结果余额(GET)-放入varupdatedBalance,例如updatedBalance是mainBalance+10$ 所有值都必须是float类型 我陷入了最后一步:我提出了一个BeanShell断言,但不起作用。它认为我得到的值是错误的,而且我没有按照JMeter的要求进行计算。我还尝试了vars.get(String.valueOf(“mainBalance”)) 这是

我在JMeter中有这个方案:

获取放在varmainBalance中的余额值(Get)
进行充电(POST)
验证结果余额(GET)-放入varupdatedBalance,例如updatedBalancemainBalance+10$
所有值都必须是float类型

我陷入了最后一步:我提出了一个BeanShell断言,但不起作用。它认为我得到的值是错误的,而且我没有按照JMeter的要求进行计算。我还尝试了vars.get(String.valueOf(“mainBalance”))

这是日志错误:

断言错误:true 断言失败:false 断言失败消息:org.apache.jorphan.util.JMeterException:调用bsh方法时出错:文件中的eval:内联求值:``float a=new float(“mainBalance”);浮动b=新浮动(“更新余额”);如果(b…“”遇到“(在第1行第20列)

  • 不要使用Float数据类型来表示货币操作,至少要使用Float数据类型
  • 不要使用Beanshell,因为它可能会成为性能瓶颈,改用Beanshell
  • 相关代码类似于:

    def a = new BigDecimal(vars.get('mainBalance'))
    def b = new BigDecimal(vars.get('updatedBalance'))
    if (b.compareTo(a.add(new BigDecimal('10'))) != 0) {
        AssertionResult.setFailure(true)
    }
    

    更多信息:

    我不太理解groovy代码,在我看来应该有if(b.compareTo(a.add(new BigDecimal('10'))=0){AssertionResult.setFailure(true)}感谢您捕捉到了输入错误
    def a = new BigDecimal(vars.get('mainBalance'))
    def b = new BigDecimal(vars.get('updatedBalance'))
    if (b.compareTo(a.add(new BigDecimal('10'))) != 0) {
        AssertionResult.setFailure(true)
    }