2013-04-30 29 views
2

我正在通過SoapUI(不是Pro)中的WSDL定義接口執行一系列文件上傳和下載操作。內置斷言來驗證這些附件是不夠的。我發現了一些Groovy代碼,可以讓我獲得上傳附件的大小。如何在SoapUI中獲得響應附件的大小?

import com.eviware.soapui.impl.wsdl.support.RequestFileAttachment 

def uploadsize = testRunner.testCase.getTestStepByName("Upload File (200KB)").testRequest.getAttachmentAt(0).getSize() 

我在尋找類似的代碼來獲得下載附件的大小。 HTTP標頭指定內容類型是「multipart/related」和UTF-8。附件本身是「Content-Type:application/octet-stream \ n Content-Transfer-Encoding:binary」

我試過下面的代碼片段,但它不會給我附件的大小,只是響應的大小。

def downloadsize = testRunner.testCase.getTestStepByName("Download File (200KB) (Logged)").testRequest.response.contentAsString.size() 

回答

4

因爲對於soapUI的Groovy類的文檔是錯綜複雜的,在最好的,我曾經反省,找出什麼樣的I類與工作:

log.info testRunner.testCase.getTestStepByName("Download File (200KB) (Logged)").testRequest.class.name 
log.info testRunner.testCase.getTestStepByName("Download File (200KB) (Logged)").testRequest.response.class.name 

這將產生:

com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest 
com.eviware.soapui.impl.wsdl.submit.transports.http.support.attachments.WsdlMimeMessageResponse 

現在人們不需要猜測要查找哪個類。

的附件大小生成的代碼是:

def downloadsize = testRunner.testCase.getTestStepByName("Download File (200KB) (Logged)").testRequest.response.getAttachments()[0].getSize() 
+1

如果你只是想在當前測試步驟,就能避免指定測試步驟的名稱,並使用 '高清downloadsize = context.testCase.getTestStepAt(上下文。 getCurrentStepIndex())。testRequest.response.getAttachments()[0] .getSize()'代替。通過這種方式,您的腳本在重構時更加靈活和強大。 – schnatterer 2014-06-02 11:08:29