2016-01-19 13 views
0

我有一個正在查找值complete的GET請求,但如果服務器中的進程未完成,則此值可能爲processingrequest_is_in_process如何在groovy中編寫遞歸函數,該函數等待響應中的特定值| SOAP UI

現在我需要一個groovy腳本或者soap-ui中的技巧,它可以繼續處理這個請求,直到它找不到作爲響應的值complete

有關更多說明,我已爲此請求創建了一個單獨的項目,它將保存我的值在全局屬性中。

import groovy.json.JsonSlurper 

responseContent = testRunner.testCase.getTestStepByName("Checking_Request").getPropertyValue("response") 
slurperresponse = new JsonSlurper().parseText(responseContent) 
log.info (slurperresponse.products.status) 



def valueFromPreviousResponse = slurperresponse.products.status 
context.testCase.testSuite.setPropertyValue('Status_of_Product_import_request', valueFromPreviousResponse) 

com.eviware.soapui.SoapUI.globalProperties.setPropertyValue("Status_of_Product_import_request", valueFromPreviousResponse) 

上面的代碼設置我的價值非常好。只是我需要繼續運行testtep,直到找不到值爲complete

注意: - 我正在測試REST API。一切都以JSON格式。另一件事是我使用SOAP-UI的免費版本,而不是專業版本

我是SOAP-UI和groovy的新成員。所以任何建議都會有幫助/歡迎。

在此先感謝! :)

+0

您是否嘗試過使用條件轉到測試步驟? – Rao

+0

nup這是什麼..我是新的SOAP-UI和groovy以及..我很後悔,如果它是非常基本的 –

+0

但有條件的goto會根據條件運行我測試步驟。我如何使它遞歸等待 –

回答

1

試試這個

While (slurperresponse.products.status!= "complete") { 
      testRuner.testcase.testStepByName("yourStepName").run(testRunner,testRunner.getRunContext()) 
    } 
+0

感謝人..我已經改變了律的代碼,它現在工作..沒有完成,但你的代碼給了我方向.. :) –

+0

@Shubham Jain我建議你完成後發佈解決方案,所以其他人可以得到好處,如果需要 – user1207289

+0

完成伴侶:) ... –

0

下面的代碼工作對我來說:

def i=0 
// Recursive Function to check response again and again 
while(slurperresponse.products.status!= "complete") { 
    project = testRunner.getTestCase().getTestSuite().getProject().getWorkspace().getProjectByName("REST Project 1") 
    testSuite = project.getTestSuiteByName("Product(PIM-API)"); 
    testCase = testSuite.getTestCaseByName("Checking_Responses"); 
    runner = testCase.run(new com.eviware.soapui.support.types.StringToObjectMap(), false); 
    sleep(new Random().nextInt(10) * 2000) 
    log.info (slurperresponse.products.status) 

// My other testcase setting the latest value of my required response in global properties and in below code I am checking the latest value 

    slurperresponse.products.status = com.eviware.soapui.SoapUI.globalProperties.getPropertyValue("Status_of_Product_import_request") 
    i++ 
    log.info (i) 
    if(i==5) 
    { 
     assert false 
     } 
} 
assert true 

由於user1207289 :)