2017-01-25 76 views
0

我有多個Environment和大量的測試用例,但並非所有的測試用例都需要在所有環境中運行。有沒有一種方法可以根據選定的環境從測試套件中只運行特定的測試用例。如何在SoapUI中選定的環境中運行特定的測試用例

對於實例 如果我選擇環境1,它將運行下面的測試案例

TC0001 
TC0002 
TC0003 
TC0004 
TC0005 

如果我選擇環境2,它只能運行下面的測試案例

TC0001 
TC0003 
TC0005 
+0

歡迎來到Stack Overflow,請花點時間關注[Stack Overflow tour](http://stackoverflow.com/tour)並閱讀[如何問一個好問題?](http:// stackoverflow .com/help/how-to-ask)同時向我們提供您爲您的問題編寫的相關代碼(您也可以閱讀[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)) –

回答

2

可以有不同解決方案來實現這一點,因爲你有多個環境,即使用專業軟件。

我將實現使用Test Suite安裝腳本解決方案:

  • 創建Test Suite級定製屬性。使用與您的環境名稱相同的名稱。例如,DEV是定義的環境,與測試套件屬性名稱相同,並提供用逗號分隔的值列表作爲該屬性的值,如TC1,TC2等,
  • 類似定義的其他環境及其值也是如此。
  • 複製下面的腳本Setup Script測試套件並執行腳本使根據環境及資產值禁用測試用例

測試套件的安裝腳本

/** 
* This is soapui's Setup Script 
* which enables/disables required 
* test cases based on the user list 
* for that specific environment 
**/ 
def disableTestCase(testCaze) { 
    testCaze.disabled = true 
} 

def enableTestCase(testCaze) { 
    testCaze.disabled = false 
} 

def getEnvironmentSpecificList(def testSuite) { 
    def currentEnv = testSuite.project.activeEnvironment.NAME 
    def enableList = testSuite.getPropertyValue(currentEnv).split(',').collect { it.trim()} 
    log.info "List of test for enable: ${enableList}" 
    enableList 
} 

def userList = getEnvironmentSpecificList(testSuite) 
testSuite.testCaseList.each { kase -> 
    if (userList.contains(kase.name)) { 
     enableTestCase(kase) 
    } else { 
     disableTestCase(kase) 
    } 
} 

其他的方法實現這一點的方法是使用ReadyAPI的Event功能,您可以使用TestRunListener.beforeRun()並篩選測試用例是否執行或忽略。

編輯: 如果使用的是ReadyAPI,那麼你就可以將新的功能,稱爲tag測試用例。測試用例可以使用多個值進行標記,您可以使用特定的標記執行測試。在這種情況下,您可能不需要擁有與開源版本相同的setup script。有關更多詳細信息,請參閱documentation。 此解決方案僅針對Pro軟件,開放源代碼版本具有此tag功能。

+0

如何在Event中做到這一點..我正在使用Pro SoapUI – raiqee

+0

如果您嘗試給定的解決方案並接受它作爲答案(如果有用),那將會很好。事件的方式,似乎並不直截了當。 – Rao

+0

我在這行遇到一個錯誤def userList = getEnvironmentSpecificList(testSuite)..錯誤是[鏈接](https://www.screencast.com/t/d4twV54IOduU) – raiqee

相關問題