2013-11-21 51 views
2

我正在使用帶有多個工作區的SoapUI(4.6.1版)的免費版本。我的一個挫折是,SoapUI似乎不支持工作區級別的自定義屬性。con:設置工作區和工程文件中的元素

我回顧的*-soapui-workspace.xml文件包含一個空的con:settings元素(即<con:settings/>)。同樣在我已閱讀的*-soapui-project.xml文件中。

我的直覺&希望這些元素允許工作區或項目級別的添加或覆蓋我在我的通用soapui-settings.xml文件中看到的設置 - 例如,當給定工作空間加載時,我想要的其他全局屬性。

然而,當我創建一個設置文件SomeService Tests-soapui-settings.xml包含...

<?xml version="1.0" encoding="UTF-8"?> 
<con:soapui-settings xmlns:con="http://eviware.com/soapui/config"> 
<con:setting id="[email protected]"><![CDATA[<xml-fragment xmlns:con="http://eviware.com/soapui/config"> 
    <con:property> 
    <con:name>WorkspaceCustomPropertyTest</con:name> 
    <con:value>some value</con:value> 
    </con:property> 
</xml-fragment>]]> 
</con:setting> 
</con:soapui-settings> 

...並在SomeService Tests-soapui-workspace.xml文件像這樣設置con:settings元素...

<?xml version="1.0" encoding="UTF-8"?> 
<con:soapui-workspace name="SomeService Tests" soapui-version="4.6.1" projectRoot="${workspaceDir}" xmlns:con="http://eviware.com/soapui/config"> 
    <con:description>Workspace to organize all SomeService test projects.</con:description> 
    <con:settings>SomeService Tests-soapui-settings.xml</con:settings> <!-- Reference the workspace settings file. --> 
    <con:project name="SomeService Authentication Tests">SomeService Authentication Tests-soapui-project.xml</con:project> 
</con:soapui-workspace> 

。 .., 什麼都沒發生。

加載工作區時我沒有收到錯誤,但我也沒有得到任何跡象表明con:settings元素也在做任何事情。例如,SoapUI首選項>全局屬性不會列出WorkspaceCustomPropertyTest屬性。

我當然可以保持修補,但對工作空間和項目文件con:settings的解釋會有所幫助。

搜索SO,SmartBear SoapUI forum,更廣泛地說,對於工作空間和項目文件con:settings的解釋至今沒有產生任何效果。

任何人都可以解釋如何使用工作區和項目文件con:settings元素?

或者,任何人都可以闡明如何使用免費版的SoapUI實現類似的結果(即工作空間級別的自定義屬性)嗎?

+2

你的工作空間級別設置文件中有什麼樣的數據?你不能創建一個屬性文件,並閱讀它使用groovy?每個工作區都有一個單獨的文件? –

+0

@AbhishekAsthana:基本名稱 - 值對 - 例如'ServiceHost = server01.some.domain','ServiceDirectory =/vdir1/vdir2 /'等等 - 我需要在各個項目中重複。從工作區屬性文件中將它們讀入每個項目中的[窮人腳本庫](http://www.doan.me/script-library-in-soapui-free.aspx)是我猜想的潛在解決方法。 – J0e3gan

回答

1

那該怎麼辦?

創建一個INI(「myconfig.groovy」)文件(「假設該文件將在您的項目文件的同一目錄」):

global_property='Global value' 

使用此Groovy腳本搶財產:

// Script imports 
import com.eviware.soapui.support.GroovyUtils 
import groovy.util.ConfigSlurper 

// Grovvy utils handle OS directories path abstraction 
def groovyUtils = new GroovyUtils(context) 

def config = new ConfigSlurper().parse(new File(groovyUtils.projectPath + '/myconfig.groovy').toURL()) 

// Just logging the property but you can set the property here 
log.info config.global_property 

然後,您可以在運行時將值添加到所需的對象。

+0

這可以將項目的屬性添加到項目範圍內的'config' _ Load Script_ - 其中添加了代碼。真正想要的是引用'config'的屬性_project-wide_ - 例如一個Groovy腳本測試步驟。給我一個旋風,我得到了錯誤'groovy.lang.MissingPropertyException:沒有這樣的屬性:配置類:Script1'。像我讀過的那樣,在項目內的[窮人的腳本庫](http://www.doan.me/script-library-in-soapui-free.aspx)中定義的'config'中添加slρ的屬性可能會我想可以在項目範圍內引用他們。思考? – J0e3gan

+1

我想你可以將其添加到項目加載腳本。使用project.setPropertyValue('global_property',config.global_property)來設置屬性。這將適用於所有測試套件和案例。另一種選擇是在系統中設置一個環境,並使用如下所示:$ {#System#my_variable}。但我的選擇是使用測試套件上的設置腳本,我從來沒有使用過項目腳本。 –

+0

我已經將它添加到一個已經作爲PoC的項目加載腳本中;但是您只需爲每個工作空間級別屬性設置自定義項目屬性就可以實現項目範圍訪問。咄! :P對於在每個工作區項目中使用工作空間級別的屬性文件和相關的Groovy的體面解釋,我可能不知道如何利用我所問的'con:settings'元素......但看到它並不重要 - 設置除了關注最小化和維護常見項目代碼和處理潛在的項目自定義屬性混亂(即我可以解決的問題)之外。 – J0e3gan

-1

SoapUI確實支持全局屬性。

文件>首選項>全局屬性

在這裏,你可以指定一個跨越所有項目全局屬性。可悲的是,目前它將用於所有工作空間。希望這有助於,有一個groovy腳本來手動處理一切似乎有點過分殺了我。