0

我有多个环境和很多测试用例,但并非所有测试用例都需要在所有环境中运行。有没有办法根据所选环境仅运行测试套件中的特定测试用例。

例如,如果我选择 Environment1,它将运行以下测试用例

TC0001
TC0002
TC0003
TC0004
TC0005

如果我选择 Environment2,它将只运行以下测试用例

TC0001
TC0003
TC0005
4

1 回答 1

2

可以有不同的解决方案来实现这一点,因为您有多个环境,即正在使用专业软件。

我将使用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)
    }
}

实现这一点的其他方法是使用EventReadyAPI 的功能,您可以使用TestRunListener.beforeRun()和过滤测试用例是否执行或忽略。

编辑: 如果您使用的是,那么您可以使用称为测试用例ReadyAPI的新功能。tag一个测试用例可以用多个值标记,您可以使用特定标记执行测试。在这种情况下,您可能不需要拥有setup script开源版本的原样。有关详细信息,请参阅文档。此解决方案仅特定于Pro软件,开源版本确实具有此tag功能。

于 2017-01-27T06:08:43.800 回答