如何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。具体来说,它执行三个步骤:
- 替换每个回车 return (#xD)、换行符 (#xA) 和制表符 (#x9)
- 具有单个 space 的字符 (#x20) 折叠所有连续的
- spaces 变成一个 space 删除所有前导和尾随 spaces
谢谢
如何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。具体来说,它执行三个步骤:
- 替换每个回车 return (#xD)、换行符 (#xA) 和制表符 (#x9)
- 具有单个 space 的字符 (#x20) 折叠所有连续的
- spaces 变成一个 space 删除所有前导和尾随 spaces
谢谢