2016-06-20 13 views
0

Ich möchte bestimmte testStep meines Testcases von Seife mit Java-Code ausführen. Mein Problem ist, wenn ich versuche, auf Testschrittniveau zu laufen, benötigt es Argument von TestCase-Läufer, der anonymer innerer Typ und TestCaseRunContext ist, der Schnittstelle ist. Muss ich beides implementieren, um dasselbe zu machen? wenn ja kann bitte irgendein Beispiel, wie man das tut ??So führen Sie bestimmte Testschritt von soapUi in Java

hier ist mein Code

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; 

    } 

    } 

} 
+0

Bitte schauen Sie, ob [dies] (https://www.soapui.org/test-automation/junit/junit-integration.html) hilft. – Rao

+0

Ich sah, dass es auf Testfallebene läuft, aber ich möchte auf Testschritt Ebene. Welche Methode habe ich in Frage – LowCool

+0

ausgeführt Was zwingt Sie, so zu laufen? Was ist der Vorteil, den Sie mit SoapUI erhalten? – Rao

Antwort

1

Nachdem verschiedene Dinge ich versucht, so etwas wie dieses bekam.

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

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

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

Ich weiß nicht, wie es funktioniert, dieser Trick arbeitete für mich. Wenn jemand den Grund dafür kennt, bitte teile