如何在java中运行soapUi的特定测试步骤

时间:2016-06-20 13:21:13

标签: java automation soapui

我想使用java代码运行我的soap ui测试用例的特定testStep。我的问题是,当我尝试在测试步骤级别运行时,它需要TestCase runner的参数,它是匿名内部类型,TestCaseRunContext是接口。我是否必须同时执行两者?如果是,可以请任何样本如何做到??

这是我的代码

package com.testauto.soaprunner.soap.impl;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.eviware.soapui.SoapUI;
import com.eviware.soapui.StandaloneSoapUICore;
import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.impl.wsdl.WsdlTestSuite;
import com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase;
import com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner;
import com.eviware.soapui.impl.wsdl.teststeps.WsdlTestStep;
import com.eviware.soapui.model.TestPropertyHolder;
import com.eviware.soapui.model.iface.MessageExchange;
import com.eviware.soapui.model.propertyexpansion.PropertyExpansionUtils;
import com.eviware.soapui.model.testsuite.TestCase;
import com.eviware.soapui.model.testsuite.TestCaseRunContext;
import com.eviware.soapui.model.testsuite.TestProperty;
import com.eviware.soapui.model.testsuite.TestStepResult;
import com.eviware.soapui.model.testsuite.TestSuite;
import com.eviware.soapui.support.types.StringToObjectMap;
import com.eviware.soapui.support.types.StringToStringsMap;
import com.testauto.soaprunner.data.InputData;
import com.testauto.soaprunner.data.ReportData;

public class RunTestImpl{

    static Logger logger = LoggerFactory.getLogger(RunTestImpl.class);
    List<ReportData> reportDatList=new ArrayList<ReportData>();
    public  List<ReportData> process(Map<String, String> readDataMap, InputData input, Map<List<String>, String> configurationMap, List<String> configuration, WsdlTestSuite testSuite)
    {
         List<ReportData>  report = new ArrayList<ReportData>();
            logger.info("Into the Class for running test cases");
            try{
    report= getTestSuite(readDataMap,input,configurationMap,configuration,testSuite);
            }
            catch(Exception e)
            {
                logger.info(e.getMessage());
            }
            return report;
    }

    private  List<ReportData> getTestSuite(Map<String, String> readDataMap, InputData input, Map<List<String>, String> configurationMap, List<String> configuration, WsdlTestSuite testSuite) throws Exception {

        ReportData report=new ReportData();

         logger.info("Into the Class for running test cases");

        String suiteName = "";
        String reportStr = "";






    List<String>  testCaseNameList=  setPropertyValues(readDataMap,input);





      WsdlTestCaseRunner runner = null;

        List<TestSuite> suiteList = new ArrayList<TestSuite>();
        List<TestCase> caseList = new ArrayList<TestCase>();

        SoapUI.setSoapUICore(new StandaloneSoapUICore(true));


      System.out.println("testcase name "+ configurationMap.get(configuration));

    //  WsdlTestCase testCase= testSuite.getTestCaseByName(input.getApiName()+"_"+testCaseName+"_TestCase");
       WsdlTestCase testCase= testSuite.getTestCaseByName("my_TESTCASE");

       WsdlTestStep tesStep=testCase.getTestStepByName(configurationMap.get(testCaseNameList));
System.out.println("test case name:"+testCase.getName());
report.setTestCase(testCase.getName());


      suiteList.add(testSuite);






    runner=  tesStep.run(?,?);






        return reportDatList;
    }
    private List<String> setPropertyValues(Map<String, String> readDataMap, InputData input) {
        String testCaseName="";
         TestPropertyHolder holder = PropertyExpansionUtils.getGlobalProperties();
         List<String> dataConfigurationList=new ArrayList<String>();
         Iterator entries = readDataMap.entrySet().iterator();
          while (entries.hasNext()) {
              Entry thisEntry = (Entry) entries.next();
             String key = (String) thisEntry.getKey();
            String value = (String) thisEntry.getValue();

                testCaseName+=key;
                holder.setPropertyValue(key, holder.getPropertyValue(key));
                dataConfigurationList.add(key);

                  }


         System.out.println("testCaseName"+testCaseName);
          return dataConfigurationList;

    }

    }

}

1 个答案:

答案 0 :(得分:1)

在尝试不同的事情后,我得到了类似的东西。

 TestCaseRunContext context = new MockTestRunContext(new MockTestRunner(testStep.getTestCase()), testStep);

        MockTestRunner runner = new MockTestRunner(testStep.getTestCase());

        TestStepResult testStepResult=   testStep.run(runner, context);

我不知道它的工作原理这个技巧对我有用。如果有人知道背后的原因请分享