有没有办法在使用SoapUI进行XPath测试时在断言中使用通配符?
我看了一下SoapUI的文档,他们说你可以做这样的事情
<path1>
<path2>*</path2>
</path1>
我选中了“允许通配符”复选框。
我的问题是:我想断言我的约会从2012-08-22开始,但我不关心分钟和秒。我想我的表达应该像2012-08-22 *但它不起作用。
答案 0 :(得分:3)
你在做什么听起来应该有用。这是我使用http://www.geonames.org/export/web-services.html#timezone的休息服务烹饪的一个简单示例。我正在使用他们提供的演示
http://api.geonames.org/timezone?lat=47.01&lng=10.2&username=demo 输出
<geonames>
<timezone tzversion="tzdata2012c">
<countryCode>AT</countryCode>
<countryName>Austria</countryName>
<lat>47.01</lat>
<lng>10.2</lng>
<timezoneId>Europe/Vienna</timezoneId>
<dstOffset>2.0</dstOffset>
<gmtOffset>1.0</gmtOffset>
<rawOffset>1.0</rawOffset>
<time>2012-07-25 04:39</time>
<sunrise>2012-07-25 05:50</sunrise>
<sunset>2012-07-25 21:00</sunset>
</timezone>
</geonames>
如果你在结果上进行xpath匹配并使用select from current按钮,那么
// GEONAMES /时区/时间
2012-07-25 04:39
如果您将其更新为
// GEONAMES /时区/时间
2012-07-25 *
这样可以正常工作,当用新的lat和lng更新休息请求时,断言仍会通过,因为它没有检查时间。如果这没有帮助,请提供您的完整断言,也许我可以提供更多帮助。
*注意:对于soap请求,请确保声明命名空间,然后使用正确的格式
//ns1:message
答案 1 :(得分:1)
这将是一种痛苦,但这是你可以做的:
1)使用断言选项卡找出Xpath“base”(听起来就像你在这里一样)。我使用此公共站点进行测试:http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl
我使用CornerPoints方法将'hawaii'作为单一参数。
我创建了这个'base'xpath:
declare namespace ns1='http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl';
declare namespace SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/';
declare namespace SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/';
/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:CornerPointsResponse/listLatLonOut
(it will write the declare statements for you if you click declare)
(which you can test out in the assertions window)
2)创建属性步骤
3)创建物业转移步骤
4)创建一个groovy脚本
5)添加一个属性......我称之为misc
6)添加转移步骤
* transfer from the CornerPoints - Request 1 --- Response
* paste the Xpath stuff in the box under the 'transfer from'
* Transfer to your property
(You can test with the little play button)
7)在你的groovy脚本中添加这样的东西:
def x = context.expand( '${Properties#misc}' )
def parts = x.tokenize(',')
for (def part in parts)
{
log.info(part)
if (part.startsWith("-153"))
log.info("good")
}
在groovy步骤中,您可以执行任何操作以获取(部分)数据。我添加的示例代码从包装在CDATA中的长行中获取lat / lons,然后仅检查某些数据的起始部分。只是一个示例。
请记住,您可以使用groovy和java字符串方法:
http://groovy.codehaus.org/groovy-jdk/java/lang/String.html
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html
更多常规技巧: http://www.soapui.org/Scripting-Properties/tips-a-tricks.html