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

时间:2017-01-25 08:29:26

标签: api groovy automation soapui ready-api

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

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

{% if request.path != '/' %}
  {% include 'includes/chapter/_chapter-standard-page-content.html' %}
{% else %}
  {% include 'includes/ao/_ao-standard-page-content.html' %}
{% endif %}

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

TC0001
TC0002
TC0003
TC0004
TC0005

1 个答案:

答案 0 :(得分: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功能。