2012-11-21 74 views
3

我有一個有多個操作的WSDL。對於每個操作我想要一個模板.xml與它的響應和請求。如何使用groovy腳本在soapUI中爲WSDL的所有操作生成請求和響應?

我知道如何在soapUI中手動執行此操作,但我想使用groovy腳本生成它們。 我已經搜索了很多,但似乎我是唯一一個正在尋找這個。

我的服務有16項操作,所以要做這本手冊會花費太多時間。由於該服務每兩個月更新一次,使用測試步驟的自動化將是完美的。

我設法做它已經請求:

右鍵單擊左樹'services','Generate測試Suite','Single測試用例一個請求每個Operation'

然後我循環這些測試步驟請求並將它們存儲在我的磁盤上。

import com.eviware.soapui.impl.wsdl.teststeps.* 

    for(testCase in testRunner.testCase.testSuite.getTestCaseList()) 
    { 
     for(testStep in testCase.getTestStepList()) 
     { 
      if(testStep instanceof WsdlTestRequestStep) 
      { 
       log.info "operation name: " +testStep.getName() 

       // create file name 
       Date startTime = new Date(); 
       def cur_Time = startTime.getMonth() + "_" + startTime.getDate(); 
       cur_Time = cur_Time + "_" + startTime.getHours() + startTime.getMinutes() +startTime.getSeconds() 
       def fileName = testStep.getName() + "_" + cur_Time 

       def inputFileRequest = new File("T:\\"+ "Request_" + fileName+".txt") 
       def inputFileResponse = new File("T:\\"+ "Response_" + fileName+".txt") 
       // write request to file 
       inputFileRequest.write(testStep.getProperty("request").value) 
      } 
     } 
    } 

但我還沒有想出一種方法來做到這一點也爲resposes。 如果我使用getProperty(「響應」),它當然是空的。

任何提示? :)

回答

4

,獲獎者是,我理解了它自己:

map = context.testCase.testSuite.project.interfaces["services"].operations 

for (entry in map) 
{ 
    opName = entry.getKey() 
    inputFileRequest = new File("T:\\" + opName + "Request.xml") 
    inputFileResponse = new File("T:\\" + opName + "Response.xml") 

    inputFileRequest.write(entry.getValue().createRequest(true)) 
    inputFileResponse.write(entry.getValue().createResponse(true)) 
} 
0

這是偉大的,甚至我也工作在相同的。截至目前我正在從一個文件夾採取XML請求,但我只想從WSDL本身獲取請求,並希望得到它的參數。

嘗試{

//Hitting the WSDLs one by one 
    wsdlList.each 
    { 
      wsdl -> 
      wsdlToHit=wsdl 
      log.info("WSDL To Hit :" + wsdlToHit) 


      // Creating an interface 
      log.info("Before Interface Creation") 
      iface= WsdlInterfaceFactory.importWsdl(project,wsdl, false)[0] 
      //iface= WsdlInterfaceFactory.importWsdl(project,WSDLFile, false)[0] 
      log.info("After Interface Creation") 



        if(Operation == "xyz") 
        {     
        requestXML= requestXML1 
        responseActual= responseActual1 
        expectedActual=expectedActual1 
        } 
        if(Operation == "abc") 
        {     
        requestXML= requestXML2 
        responseActual= responseActual2 
        expectedActual=expectedActual2 
        } 
         requestXML.each 
        {      
        request1 -> 
        def wsdlReqDir=request1 
        log.info("RequestLocation : " + wsdlReqDir) 

        File fl = new File(wsdlReqDir) 
        File[] wsdlDirFiles = fl.listFiles() 
        log.info("XML Files in Request Folder : " + wsdlDirFiles) 

         if(wsdlDirFiles.size()>0) 
         {       
          wsdlDirFiles.each 
          { 
           wsdlFile-> 
           log.info("Request XML file to Send :" + wsdlFile) 

           //Calling the function to hit the service 
           sendRequest(wsdlFile,iface,Operation,Report_File_LOC,requestXML,responseActual,propData) 
           reportFilewriter.flush()  


          } 

         } 

        } 

    //removing Interface created 
    removeInterface(wsdl) 
    log.info("Removed iface : " + wsdl) 
    reportFilewriter.flush()  





    } 

感謝, Hanumant

相關問題