SoapUI 断言以匹配两边 0.05 以内的字段值

SoapUI Assertion to match field value within 0.05 on either side

我目前有一个断言脚本,该脚本将响应中的值与设置值相匹配。见下文:

// get the xml response                                             
def response = messageExchange.getResponseContent()                                                 
// parse it                                             
def xml = new XmlSlurper().parseText(response)                                              
// find your node by name                                               
def node = xml.'**'.find { it.name() == 'total-premium' }                                               
// assert                                               
assert node.toString().matches("(0|27.11|0)\d*"), 'Expected Result: 0 or 27.11 or 0 Actual Result: ' + node    

我想要它做的是匹配低于和高于 0.05 的值。因此,对于这个特定的脚本,如果 total-premium 值介于 27.06 和 27.16 之间,我需要断言为真。

目前,断言代码将字段 total-premium 中的数值与 matches("(0|27.11|0)\d*") 中的三个值相匹配。

但是,我可能不想输入 11 个值 total-premium,而是希望行 assert node.toString().matches("(0|27.11|0)\d*"), 'Expected Result: 0 or 27.11 or 0 Actual Result: ' + node 通过,即使字段 total-premium 中的值是 0.05 加上或减去我手动输入此脚本的值。在这个例子中是 27.11.

为了简要概述,我有大约 1000 个测试用例,我使用 Excel 为每个测试用例创建代码和断言,然后将其导入 SoapUI。所以我根据 Excel 算法输入的值自动匹配脚本。

您可以使用 JUnit public static void assertEquals(double expected, double actual, double delta).

import org.junit.Assert
// ... your code goes here ...
// new assert
if(node.toDouble() != 0.0)
    Assert.assertEquals(27.11, node.toDouble(), 0.05)