3

複数の操作を持つ WSDL があります。各操作について、応答と要求を含むテンプレート .xml が必要です。

これをsoapUIで手動で行う方法は知っていますが、グルーヴィーなスクリプトを使用して生成したいと思います。私はすでにたくさんグーグルで検索しましたが、これを探しているのは私だけのようです。

私のサービスには 16 のオペレーションがあるため、このマニュアルを作成するには時間がかかりすぎます。サービスは 2 か月ごとに更新されるため、テスト ステップを使用した自動化は完璧です。

私はすでにリクエストに対してそれを行うことができました:

左側のツリーで「サービス」を右クリックし、「テスト スイートを生成」、「操作ごとに 1 つのリクエストを含む単一のテスト ケース」を選択します。

次に、これらのテスト ステップ リクエストをループして、ディスクに保存します。

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

しかし、私はレスポーズに対してもこれを行う方法を考え出していません。getProperty("reponse") を使用する場合、もちろん null です。

ヒントはありますか?:)

4

2 に答える 2

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))
}
于 2012-11-22T14:49:30.030 に答える
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()    





    }

ありがとう、ハヌマント

于 2013-12-24T07:31:12.367 に答える