簡體   English   中英

如何在Java中運行soapUi的特定測試步驟

[英]How to run particular Test step of soapUi in java

我想使用Java代碼運行soap ui測試用例的特定testStep。 我的問題是,當我嘗試在測試步驟級別運行時,它需要TestCaseRunner的參數(這是匿名內部類型)和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;

    }

    }

}

經過嘗試不同的事情后,我得到了這樣的東西。

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

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

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

我不知道它是如何工作的,這個技巧對我有用。 如果有人知道背后的原因,請分享

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM