如何在soapui中使用Groovy运行testcase和testsuite?

时间:2015-02-19 01:00:26

标签: groovy soapui

我在soapui有一些项目。 我想执行这些项目的测试套件和测试用例。 我尝试了这个时髦的代码:

//get test case from other project or from the same one
project = testRunner.getTestCase().getTestSuite().getProject().getWorkspace().getProjectByName("Project1")
testSuite = project.getTestSuiteByName("TestSuite 1 - Login");
testCase = testSuite.getTestCaseByName("TestCase 1-Login");
Thread.sleep(3000)
testSuite2 = project.getTestSuiteByName("TestSuite3 - Report");
testCase2 = testSuite.getTestCaseByName("TestCase1 - Report");

// run test case
runner = testCase.run(new com.eviware.soapui.support.types.StringToObjectMap(), false);
Thread.sleep(3000)
runner2 = testCase2.run(new com.eviware.soapui.support.types.StringToObjectMap(), false);

当我运行这个groovy代码时,我有以下错误消息: java.lang.NullPointer.Exception 无法在最后一行的空对象上调用方法run()

runner2 = testCase2.run(new com.eviware.soapui.support.types.StringToObjectMap(), false);

如果我删除最后一行,它运作良好。

请帮忙。 谢谢

3 个答案:

答案 0 :(得分:1)

我知道现在回答这个问题太迟了,但是我会回答这个问题,以便它可以帮助寻求帮助。

代替Thread.sleep(3000),只需使用:

onClick

现在它将等待步骤1的执行完成。然后它将开始执行步骤2。

答案 1 :(得分:0)

我唯一能想到的就是你在step2上调用了错误的测试用例,我对其他测试用例进行了相同的测试,并且它发生了同样的事情如果我输了一个错误的名字对于我想要执行的测试用例。

答案 2 :(得分:0)

// TO RUN A TEST SUITEs ALL get APIs, getting testSuite handle from current          //test_Case
// TO POST COMMENT I HAVE ADDED underscore char BELOW

// u need to import here
 def my_TestSuite = testRunner.testCase.testSuite
 log.info(my_TestSuite.name)

 for (my_TestCase in my_TestSuite.get_TestCaseList())
 {
      for (testStep in myTestCase.get_TestStepList())
      {
         if( testStep instanceof WsdlTestRequestStep || testStep instanceof                       RestTestRequestStep ) {
                  def http_Verb = (testStep.getTestRequest().getMethod())
                  String apiType = http_Verb.toString()
                  if (apiType == "GET"){
                    log.info(myTestCase.name)   
                 }
             }
         }  
  }