SOAPUI xpath断言,其中id在标记中更改
我返回了一条错误消息,我想使用xpath断言对其进行确认。问题是事务Id发生更改(系统生成),而iongt:faultstring中的其余信息保持不变 有没有一种简单的方法来做这个断言SOAPUI xpath断言,其中id在标记中更改,xpath,soapui,Xpath,Soapui,我返回了一条错误消息,我想使用xpath断言对其进行确认。问题是事务Id发生更改(系统生成),而iongt:faultstring中的其余信息保持不变 有没有一种简单的方法来做这个断言 <iongt:retrieveSystemInformationFault xmlns:iongt="http://www.testing.com/xml/TestingIONGT"> <iongt:faultcode>TestError012</iongt:faultc
<iongt:retrieveSystemInformationFault xmlns:iongt="http://www.testing.com/xml/TestingIONGT">
<iongt:faultcode>TestError012</iongt:faultcode>
<iongt:faultstring>Transaction Id: 8781991797:
Testing error message here</iongt:faultstring>
</iongt:retrieveCustomerInformationFault>
测试仪箭头012
交易记录Id:8781991797:
此处显示测试错误消息
使用“*”不起作用:
<iongt:retrieveSystemInformationFault xmlns:iongt="http://www.testing.com/xml/TestingIONGT">
<iongt:faultcode>TestError012</iongt:faultcode>
<iongt:faultstring>Transaction Id: *:
Testing error message here</iongt:faultstring>
</iongt:retrieveCustomerInformationFault>
测试仪箭头012
交易记录Id:*:
此处显示测试错误消息
我怀疑SoapUI XPath匹配预期结果通配符必须匹配整个文本节点,而不是其中的一部分
当然,您可以在不太精确的级别上进行断言,方法是在预期结果的整个文本内容中使用星号(正如您所提到的那样):
例如,您可以使用以下XPath表达式:
//iongt:retrieveSystemInformationFault/iongt:faultcode
以预期的结果
<iongt:faultcode xmlns:iongt="http://www.testing.com/xml/TestingIONGT">TestError012</iongt:faultcode>
我在这里建议使用contains()
,因为XPath 1.0没有ends-with()
。如果您真的需要精确,而不仅仅是contains()
,您可以使用string-length()
和substring()
将ends-with()替换为ends-with()
,但我怀疑是否需要一定程度的努力
上述的预期结果将是公正的
<iongt:faultstring xmlns:iongt="http://www.testing.com/xml/TestingIONGT">*</iongt:faultstring>
*
或者你可以将两者合并为一个断言。。。如果您想查看示例,请告诉我。请显示您尝试过的XPath。还请描述“不起作用”;它实际上做了什么,这与您的预期有什么不同?第三:我猜您显示的XML是您试图对其运行XPath断言的错误消息?如果是这样,我不理解将其更改为在其中添加星号的意义。您好,因为事务ID正在更改(系统生成的编号),xpath断言将失败,因为记录的内容与接收的内容不匹配。我尝试对事务ID使用*和通配符,但这不起作用,因为xpath断言试图在此处检查“Transaction ID:*”测试错误消息“。如果我对整个标记使用通配符,则可以这样做。例如。*抱歉,我仍然不清楚:您发布的XML位是什么-它们是您试图匹配的XML错误消息,还是包含XPath断言?它们看起来像前者,但如果是这样,请向我们展示XPath。第二部分是我在设置XPATH匹配断言方面的工作。我正在使用*尝试处理系统生成的事务ID值。感谢您的澄清。我仍然对您的第二个代码片段看起来像XML这一事实感到困惑,但您说它是一个XPath匹配断言。也许这只是我对SOAPUI的无知。啊。。。我敢打赌,您的第二个代码片段实际上是“预期结果”(),而不是XPath表达式本身。现在我开始明白了。。。
<iongt:faultcode xmlns:iongt="http://www.testing.com/xml/TestingIONGT">TestError012</iongt:faultcode>
//iongt:retrieveSystemInformationFault/iongt:faultstring[starts-with(., 'Transaction Id: ') and
contains(., 'Testing error message here')]
<iongt:faultstring xmlns:iongt="http://www.testing.com/xml/TestingIONGT">*</iongt:faultstring>