如何trim (space) SoapUI 断言部分的变量?

How to trim (space) the variables in the the assertion section in SoapUI?

如何trim(前导和尾随空格)SoapUI/ReadyAPI 的断言部分中的变量?

Ex:
Input String : "Failure   "
Output String : "Failure"

Ready API Assertion Popup

使用 trim 作为尾随空格。 使用替换去除空格。

def trimExample = "Some string to be trimmed.      ";
def trimmed = trimExample.trim();

def removeSpacesExample = "Some String To Lose All Spaces."
def removedSpaces = removeSpacesExample.replace(' ', '');

使用log.info(varName)看效果

您目前正在使用 'Xpath Match'

您可以尝试使用 'XQuery Match' 代替吗?它会自动修剪 space

示例响应,其中在“-1 5”之后有 spaces(因此我们将尝试删除 spaces

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
  <ConversionRateResponse xmlns="http://www.webserviceX.NET/">
     <ConversionRateResult>-1       5    </ConversionRateResult>
  </ConversionRateResponse>
</soap:Body>
</soap:Envelope>

将以下代码放入 XQuery Match

declare namespace soap='http://schemas.xmlsoap.org/soap/envelope/';
declare namespace ns1='http://www.webserviceX.NET/';


for $x in //ns1:ConversionRateResponse
return <Result>{data($x/ns1:ConversionRateResult)}</Result>

下面是结果,你可以看到 5 后面的 spaces 被删除了

<Result>-1       5</Result>

因此对于您的示例,XQuery 匹配中的代码如下所示

for $x in //ns:Results[1]/ns:Resultset[1]/ns:Row[1]
return <Result>{data($x/ns:LM_ELEC_PAYMNT_PAYMNT.PLCY_STAT_CD[1])}</Result>

最好的办法是对此类或任何其他复杂操作使用脚本断言。不过以上应该有用

经过一些 google 之后,我得到了 XSLT/XPath 方法,该方法在断言 window.

中执行给定变量的 space trim

方法名称:规范化-space()

用法如下: normalize-space(//Results[1]/ResultSet[1]/Row[1]/PAYMNT_RQST.PAYMNT_STAT_CD[1])

normalize-space 函数折叠字符串中的 whitespace。具体来说,它执行三个步骤:

  1. 替换每个回车 return (#xD)、换行符 (#xA) 和制表符 (#x9)
  2. 具有单个 space 的字符 (#x20) 折叠所有连续的
  3. spaces 变成一个 space 删除所有前导和尾随 spaces

谢谢