从Soapui中排除testuite属性的测试用例

时间:2016-08-23 14:45:20

标签: groovy soapui

我想根据某些测试套件属性的值禁用某些测试用例(即如果属性IsActive1 = false,则将禁用testcase1)。

我在测试套件安装脚本中使用了此代码但出现错误:

def testSuite = context.testCase.testSuite; 
def totalTestCases = testSuite.getTestCases().size(); 
for(n in (0..totalTestCases-1)) { 
  if(testSuite.getTestCaseAt(n).name == "${#TestSuite#IsActive}"){
     testSuite.getTestCaseAt(n).setDisabled(true) 
  }
}

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用 Groovy 脚本执行此操作。您可以将此脚本放在 testSuite 窗口的Setup script选项卡中,以便在 testSuite 之前执行脚本,禁用/启用 testCases < / em>取决于属性。

根据你的requeriments,这个脚本可能是这样的:

// get property names getting only
// the one which start with "isactive"
def isActiveList = testSuite.getPropertyNames().findAll {
    it.toLowerCase().startsWith('isactive')
}
log.info isActiveList

// get testCaseList in order
def testCaseList = testSuite.getTestCaseList()

// for each "isactive" property
// enable or disable the corresponding
// testCase
isActiveList.each{ name ->
    // get the value
    def isActive = testSuite.getPropertyValue(name).toBoolean()
    // get the order from the property name
    def testCaseIndex = name.toLowerCase() - 'isactive'
    log.info "testCase at index $testCaseIndex will be disabled ${!isActive}"
    // get the testCase and enable/disable depend
    // on isactive property
    // NOTE: IsActive1 corresponds to array pos 0
    // so a -1 is necessary
    log.info testCaseList[testCaseIndex.toInteger()-1]?.disabled = !isActive
}

根据 testCase 名称重命名属性以启用/禁用而不是使用数字,可能会更好;如果您更改了 testCase 订单或添加新订单,请避免不受欢迎的行为......

希望它有所帮助,