2014-02-03 6 views
0

Я делаю анализ данных по адресным данным. Данные для анализа должны быть вызваны вызовом мыльного веб-сервиса, который возвращает ответ мыла. В каждом ответе мыла меня интересует только конкретное поле, то есть «matchType» в примере, показанном ниже. «matchType» может иметь несколько вхождений максимум до 20. У меня есть 500 адресов, для которых я получаю 500 ответов, подобных приведенному ниже. Я использую JMeter для запуска 500 мыльных запросов в веб-службу.JMeter реакция на мыло - анализ данных

Проблема

How I can create the final results in CSV file containing 500 records that looks like 
Addressline1, MatchType1, MatchType2 ... MatchType20 

Для выше полого addressLine1 получить из запроса SOAP MatchType получить от ответа SOAP

Если нет MatchTypeN она оставляет пустой.

например. CSV-файл выглядит так:

10 Main Street, building, street,,,,,, ..., (до 20 MatchType) Park Avenue, building, building, building, ..., (upto 20th MatchType)

SOAP Request

<soapenv:Envelope xmlns:sch="http://website.com/WebService/Schema/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Body> 
    <sch:AddressRequest> 
     <AddressRequestDetails> 
     <lookupCriteria> 
      <houseName/> 
      <addressLine1>10 Main Street</addressLine1> 
      <addressLine2></addressLine2> 
      <addressLine3></addressLine3> 
      <region/> 
      <county>New York</county> 
      <country/> 
     </lookupCriteria> 
     </AddressRequestDetails> 
    </sch:AddressRequest> 
    </soapenv:Body> 
</soapenv:Envelope> 

SOAP Response

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
<soap:Body> 
    <ns2:AddressResponse xmlns:ns2="http://website.com/WebService/Schema/"> 
     <AddressResponseDetails> 
      <location> 
       <matchType>building</matchType> 
       <locationCoordinates> 
        <xCoordinate>111111.111</xCoordinate> 
        <yCoordinate>222222.222</yCoordinate> 
        <coordinateSystem>ABC</coordinateSystem> 
       </locationCoordinates> 
      </location> 
      <location> 
       <matchType>street</matchType> 
       <locationCoordinates> 
        <xCoordinate>333333.333</xCoordinate> 
        <yCoordinate>444444.444</yCoordinate> 
        <coordinateSystem>DEF</coordinateSystem> 
       </locationCoordinates> 
      </location> 
     </AddressResponseDetails> 
    </ns2:AddressResponse> 
</soap:Body> 

ответ

0

Вам необходимо следующее:

  1. значения отклика Extract matchType и хранить их в JMeter переменных
  2. Написать эти переменные в CSV файл

Для пункта 1 я предлагаю использовать XPath Extractor постпроцессор. Соответствующее выражение Xpath

будет

//ns2:AddressResponse/AddressResponseDetails/location/matchType/text() 

После этого вам нужно записать вывод в файл. Наилучшим вариантом является использование Beanshell Post Processor

Предполагая, что вы использовали matchType переменную в XPath экстрактор вы должны получить что-то вроде

matchType=building 
matchType_1=building 
matchType_2=street 
matchType_matchNr=2 

Все выше JMeter переменных.

Так следующий код Beanshell должен сделать трюк для вас:

FileOutputStream out = new FileOutputStream("myfile.csv",true); 
StringBuilder sb = new StringBuilder(); 
int matchCount = Integer.parseInt(vars.get("matchType_matchNr")); 

sb.append("10 Main Street"); 
sb.append(","); 
for (int i=1;i<=matchCount; i++) 
{ 
    sb.append(vars.get("matchType_" + i)); 
    sb.append(","); 

} 
sb.append(System.getProperty("line.separator")); 
out.write(sb.toString().getBytes("UTF-8")); 
out.flush(); 
out.close(); 

Надеется, что это помогает

+0

vars.get ("matchType_matchNr"), похоже, не работает. Мне пришлось создать 20 экстракторов, таких как –

+0

...продолжая предыдущий комментарий // AddressResponseDetails/место [1]/MatchType // AddressResponseDetails/место [2]/MatchType // AddressResponseDetails/место [3]/MatchType и так далее. –

+0

Если вы удалите индекс '[1]' '[2]' и т. Д. Из своего XPath, вы сможете использовать одно выражение для извлечения всех типов соответствия, как в моем примере. Вы можете использовать команду Debug Sampler и View List Tree для просмотра совпадений. Кроме того, JMeter 2.11 предоставляет XPath Tester в виде дерева результатов. –

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