如何从Soap UI中的数据库(JDBC)获取数据

时间:2016-09-06 13:14:24

标签: soapui soap-client

我想在SOAP UI中从请求到数据库(JDBC)获取数据。例如,我有这样的连接和请求: enter image description here

在其他步骤中,我尝试从数据库中获取数据:

 def get_iccid =    context.expand('${DB_Get_Free_SIM#ResponseAsXml#//Results[1]/ResultSet[1]/Row[1]/ICC_ID[1]}');
log.info("iccid from database  = " + get_iccid);

我没有得到任何东西。

1 个答案:

答案 0 :(得分:1)

我认为问题出在XPath上,尝试添加通配符以匹配任何名称空间:

//*:Results[1]/*:ResultSet[1]/*:Row[1]/*:ICC_ID[1]

在您的代码中:

def get_iccid = 
context.expand('${DB_Get_Free_SIM#ResponseAsXml#//*:Results[1]/*:ResultSet[1]/*:Row[1]/*:ICC_ID[1]}'); 

请注意,如果只有一个<Results><ResultsSet><Row>元素,则无需指定[1],因此,如果您的 JDBC 响应类似于:

<Results>
    <ResultSet fetchSize="10">
        <Row rowNumber="1">
           <ICC_ID>someValue</ICC_ID>
        </Row>
    </ResultSet>
</Results>

您可以将XPath简化为:

//*:Results/*:ResultSet/*:Row/*:ICC_ID

作为评论中的@Siking注释, JDBC TestStep 响应在<Row>之前始终具有相同的结构,因此从//*:Row开始是安全的,然后是XPath可能更简单:

//*:Row/*:ICC_ID