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

How to get data from database (JDBC) in Soap UI

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

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

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

我什么也没得到。

我认为问题出在 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> 之前始终具有相同的结构,因此从 [=22 开始是安全的=],那么 XPath 可以更简单:

//*:Row/*:ICC_ID