如何使用Groovy在所有测试用例中启用/禁用特定断言?

时间:2017-11-02 05:32:16

标签: groovy soapui

我有套件在Soap UI中运行回归测试用例。它有一个断言Capture Response来衡量每个请求的时间。这是需要的。

如果需要指标,那么我需要启用捕获响应时间断言,如果不需要,那么我不需要捕获响应时间。

我编写了以下代码来检查它是否被禁用。如果它被禁用,那么OK,我需要禁用它。

以下代码返回

  

java.lang.NullPointerException:无法获取属性'禁用'在null对象上。

任何人都可以帮忙吗?

def project = testRunner.getTestCase().getTestSuite().getProject().getWorkspace().getProjectByName("Regression");
//Loop through each Test Suite in the project
    for(suite in project.getTestSuiteList()) 
    {
        //log.info(suite.name)
            //Loop through each Test Case
        if(suite.name == "ReusableComponent")
        {
            for(tcase in suite.getTestCaseList()) 
            {               
                  log.info(tcase.name)
                  for(tstep in tcase.getTestStepList())
                  {
                    stepName = tstep.name
                    suiteName=suite.name
                    caseName=tcase.name
                    def testStep = testRunner.testCase.testSuite.project.testSuites["$suiteName"].testCases["$caseName"].getTestStepByName("$stepName")
                    log.info(testStep.getAssertionByName("CaptureResponseTime").disabled)
                  }

            }
        }
    }

1 个答案:

答案 0 :(得分:3)

以下语句导致NullPointerException

log.info(testStep.getAssertionByName("CaptureResponseTime").disabled)

为了避免 NPE ,请将其更改为:

log.info(testStep.getAssertionByName("CaptureResponseTime").isDisabled)

如果您需要禁用断言,请使用以下语句:

testStep.getAssertionByName("CaptureResponseTime")?.disabled = true

另一个输入:

要获得project,请不要使用workspace

改为使用:

def project = context.testCase.testSuite.project