如何 运行 在 SoapUI 中选择环境中的特定测试用例

How to run an specific test case in the selected environment in SoapUI

我有多个环境和很多测试用例,但并不是所有的测试用例都需要在所有环境中都是运行。有没有办法 运行 仅从基于 selected 环境的测试套件中的特定测试用例。

例如 如果我select Environment1,它将运行下面的测试用例

TC0001
TC0002
TC0003
TC0004
TC0005

如果我select环境2,它将运行只有以下测试用例

TC0001
TC0003
TC0005

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

我会使用 Test Suite 安装脚本 :

来实现解决方案
  • 创建 Test Suite 级自定义 属性。使用与环境名称相同的名称。例如,DEV 是定义的环境,使用与测试套件相同的名称 属性 并提供以逗号分隔的值列表作为 属性 的值,比如 TC1, TC2等,
  • 同样定义了其他环境及其值。
  • 测试套件复制Setup Script中的以下脚本并执行启用或[=33=的脚本]根据环境和属性值
  • 禁用测试用例

测试套件的安装脚本

/**
* 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 功能。