我有多个环境和很多测试用例,但并非所有测试用例都需要在所有环境中运行。有没有办法根据所选环境从测试套件中仅运行特定的测试用例。
例如 如果我选择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
答案 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
功能。