我有多个环境和很多测试用例,但并非所有测试用例都需要在所有环境中运行。有没有办法根据所选环境仅运行测试套件中的特定测试用例。
例如,如果我选择 Environment1,它将运行以下测试用例
TC0001
TC0002
TC0003
TC0004
TC0005
如果我选择 Environment2,它将只运行以下测试用例
TC0001
TC0003
TC0005
我有多个环境和很多测试用例,但并非所有测试用例都需要在所有环境中运行。有没有办法根据所选环境仅运行测试套件中的特定测试用例。
例如,如果我选择 Environment1,它将运行以下测试用例
TC0001
TC0002
TC0003
TC0004
TC0005
如果我选择 Environment2,它将只运行以下测试用例
TC0001
TC0003
TC0005
可以有不同的解决方案来实现这一点,因为您有多个环境,即正在使用专业软件。
我将使用Test Suite
's Setup Script实现解决方案:
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)
}
}
实现这一点的其他方法是使用Event
ReadyAPI 的功能,您可以使用TestRunListener.beforeRun()
和过滤测试用例是否执行或忽略。
编辑:
如果您使用的是,那么您可以使用称为测试用例ReadyAPI
的新功能。tag
一个测试用例可以用多个值标记,您可以使用特定标记执行测试。在这种情况下,您可能不需要拥有setup script
开源版本的原样。有关详细信息,请参阅文档。此解决方案仅特定于Pro
软件,开源版本确实具有此tag
功能。