2017-01-25 42 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

相关问题