【问题标题】:How to trim (space) the variables in the the assertion section in SoapUI?如何修剪(空格)SoapUI 中断言部分中的变量?
【发布时间】:2018-03-18 10:33:01
【问题描述】:

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

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

Ready API Assertion Popup

【问题讨论】:

  • 您的意思是从分配给 var 的值中修剪或删除空格?
  • 我的意思是从分配给变量的值中删除空格。
  • 您介意提供示例数据(以文本的形式,而不是图像的形式)并提及您使用的是哪种断言?问题是什么?从摘要/描述或您的 cmets 从下面的答案中都没有明确的问题。

标签: groovy soapui ready-api


【解决方案1】:

经过一番 google,我得到了 XSLT/XPath 方法,该方法在断言窗口中对给定变量进行空间修剪。

方法名:normalize-space()

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

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

  1. 替换每个回车符 (#xD)、换行符 (#xA) 和制表符 (#x9)
  2. 带有单个空格的字符 (#x20) 折叠所有连续的
  3. 空格合并为一个空格删除所有前导和尾随空格

谢谢

【讨论】:

  • 这不是 Groovy 方法,这是 XPath 方法。
【解决方案2】:

您现在正在使用“Xpath Match”

您能否尝试改用“XQuery Match”。它会自动修剪空间

我们在“-1 5”之后有空格的示例响应(因此我们将尝试删除空格

<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 后面的空格被删除了

<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>

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

【讨论】:

  • 感谢您的回复。我得到了一个简单的方法,如下所述。所以无法尝试这个。我相信这也将有助于解决这个问题。
【解决方案3】:

对尾随空格使用修剪。 使用 replace 去除空格。

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) 看看效果。

【讨论】:

  • 这些方法在 ReadyAPI 的断言弹出窗口中不起作用。
  • 它在脚本断言和 Groovy 脚本中为我工作。我会在星期一重新检查工作,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-25
  • 2019-08-19
  • 2017-01-03
相关资源
最近更新 更多