我試圖模塊化我的測試用例,因此我正在運行一個共享的測試用例(作爲一個過程),它執行一些有用的操作並返回結果值。因爲我需要傳遞非字符串輸入特性,我已經測試情況下,從常規運行:從SoapUI返回值TestCase
def findLoopEndTC = testRunner.testCase.testSuite.testCases["TestCase - Find Loop End"]
assert findLoopEndTC != null, "Referred TC not found"
def runContext = new com.eviware.soapui.support.types.StringToObjectMap()
runContext.put("TestStepContext", context)
def runner = findLoopEndTC.run(runContext, false)
assert runner.status != com.eviware.soapui.model.testsuite.TestRunner.Status.FAILED : runner.reason
我已經瞭解到,測試用例使用保證了SINGLETON_AND_WAIT模式運行TestCase的本身以線程安全的方式運行。 我的問題是如何以線程安全的方式從運行測試用例返回值?我試過runner.getRunContext().getProperty("Result")
,但似乎上下文屬性不再存在。所以似乎只有「古典」的方式,findLoopEndTC.getPropertyValue("Result")
,但這顯然不是線程安全的。 還有其他的可能嗎?
我使用免費版的SoapUI。
我選擇了這個解決方案:在runContext中傳遞一個Map作爲參數,並在地圖中設置返回值: def results = [:]; runContext.put(「results」,results); – xarx
不幸的是,我發現tc.run()方法本身在從負載測試(這是需要線程保存的主要場所)運行時不是線程安全的。所以它只能用於功能測試。看到我的bug報告http://forum.soapui.org/viewtopic.php?f=13&t=21961&sid=5bb191e6d594dabffda35cb43a2d7699 – xarx