2016-09-06 9 views
0

Я хотел бы получить данные из запроса в базу данных (JDBC) в пользовательском интерфейсе SOAP. Например у меня есть такое подключение и запрос: enter image description hereКак получить данные из базы данных (JDBC) в Soap UI

В другом этапе я пытаюсь получить данные из базы данных:

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

и я не получил ничего.

+0

Вам нужно что-либо сделать с помощью ret проверенные данные? – Rao

ответ

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

Для SoapUI JDBC отвечает, что он должен всегда быть в безопасности, чтобы запустить XPath с '// *: Row'. '// *: Results/*: ResultSet' можно отбросить. – SiKing

+0

@siking правый хороший пункт! потому что структура xml до '' всегда одна и та же. – albciff

Смежные вопросы