Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SOAPUI xpath断言,其中id在标记中更改_Xpath_Soapui - Fatal编程技术网

SOAPUI xpath断言,其中id在标记中更改

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

我返回了一条错误消息,我想使用xpath断言对其进行确认。问题是事务Id发生更改(系统生成),而iongt:faultstring中的其余信息保持不变

有没有一种简单的方法来做这个断言

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