我有多个Environment和大量的测试用例,但并非所有的测试用例都需要在所有环境中运行。有没有一种方法可以根据选定的环境从测试套件中只运行特定的测试用例。如何在SoapUI中选定的环境中运行特定的测试用例
对于实例 如果我选择环境1,它将运行下面的测试案例
TC0001
TC0002
TC0003
TC0004
TC0005
如果我选择环境2,它只能运行下面的测试案例
TC0001
TC0003
TC0005
我有多个Environment和大量的测试用例,但并非所有的测试用例都需要在所有环境中运行。有没有一种方法可以根据选定的环境从测试套件中只运行特定的测试用例。如何在SoapUI中选定的环境中运行特定的测试用例
对于实例 如果我选择环境1,它将运行下面的测试案例
TC0001
TC0002
TC0003
TC0004
TC0005
如果我选择环境2,它只能运行下面的测试案例
TC0001
TC0003
TC0005
可以有不同解决方案来实现这一点,因为你有多个环境,即使用专业软件。
我将实现使用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
功能。
欢迎来到Stack Overflow,请花点时间关注[Stack Overflow tour](http://stackoverflow.com/tour)并阅读[如何问一个好问题?](http:// stackoverflow .com/help/how-to-ask)同时向我们提供您为您的问题编写的相关代码(您也可以阅读[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)) –