sibaram_subudhiOccasional ContributorJoined 9 years ago7 Posts2 LikesLikes received1 SolutionView All Badges
ContributionsMost RecentMost LikesSolutionsRe: How to capture assertions from SoapUI Test steps while executing SoapUI Scripts from a java applicat Yes. You can do that in the same way Re: Announcement: Java 7 required for SoapUI Open Source 5.2 (coming soon) Hi, Got the failed assertions from the SoapUI test steps along with detailed message, exception and titles. Hope it will be useful to all those people who want to create reporting for open source version /** * to execute SoapUI test cases from a SoapUI project using Java */ public static void runSoapUITest(){ String suiteName = ""; String reportStr = ""; //instantiate lists for storing soapui test suites and test cases List<TestSuite> suiteList = new ArrayList<TestSuite>(); List<TestCase> caseList = new ArrayList<TestCase>(); //Set the SoapUI stand alone server as test engine SoapUI.setSoapUICore(new StandaloneSoapUICore(true)); // specified soapUI project WsdlProject project = null; try { //@Todo: Make relative path in enhancements //the file path need to be in a configuration file String soapUIProjectFilePath="C:\\SoapUI\\NDC 3-soapui-project.xml"; //Path of the project location project = new WsdlProject(soapUIProjectFilePath); } catch (XmlException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (SoapUIException e) { e.printStackTrace(); } // get a list of all test suites on the project suiteList = project.getTestSuiteList(); // iterating through each suite for(int i = 0; i < suiteList.size(); i++){ //Neglect if suite is disabled/inactive if(suiteList.get(i).isDisabled()){ continue; } // get the test suite name000 suiteName = suiteList.get(i).getName(); System.out.println("Test Suite Is :" + suiteName ); reportStr = reportStr + "\nTest Suite: " + suiteName; // get a list of all test cases from the test suite caseList = suiteList.get(i).getTestCaseList(); WsdlTestCaseRunner runner; // iterating through each test case for(TestCase testcase : caseList){ //neglect the disabled/inactive test case if (testcase.isDisabled()) { continue; } //Getting the WsdlTestCaseRunner runner = new WsdlTestCaseRunner((WsdlTestCase) testcase, new StringToObjectMap(testcase.getProperties()) ); //Running the Test Case runner.run(); //Getting the result of each step List<TestStepResult> results = runner.getResults(); System.out.println("Test Case : " + testcase.getName()); //iterating through the results of the test steps executed in the test case for(TestStepResult result : results ){ TestStepStatus stepStatus = result.getStatus(); //printing the status , we can have a check here for OK , FAILED or UNKNOWN test cases System.out.println("Test Step Is : "+ result.getTestStep().getName() + " Test Step Status Is : " + stepStatus.toString()); if (result instanceof WsdlTestRequestStepResult){ if(result.getMessages().length>0){ //Getting the error messages String[] errStr = result.getMessages(); StringBuilder sb= new StringBuilder(); //iterating through the error messages for(int ii=0;ii<errStr.length;ii++){ String asserWithExcptn=errStr[ii]; String assertName= asserWithExcptn.substring(0,asserWithExcptn.indexOf("]")+1); String assertResult= asserWithExcptn.substring(asserWithExcptn.indexOf("]")+1, asserWithExcptn.length()); sb.append("The failed assertion #"+(ii+1)+" as follows.. \n"); sb.append("The assertion is: "+assertName+"\n"); sb.append("The message is:"+assertResult); sb.append("\n"); } System.out.println(sb.toString()); } } } reportStr = reportStr + "\n\tTestCase: " + testcase.getName() + "\tStatus: " + runner.getStatus() + "\tReason: " + runner.getReason(); } } //'reportStr' has the status of all the test cases System.out.println("The Execution Status as follows: \n"+reportStr); } Re: How to capture assertions from SoapUI Test steps while executing SoapUI Scripts from a java applicat Hi Rupert, Thanks for providing your inputs. However I implemented in similar way with different approach. // get a list of all test suites on the project suiteList = project.getTestSuiteList(); // iterating through each suite for(int i = 0; i < suiteList.size(); i++){ //Neglect if suite is disabled/inactive if(suiteList.get(i).isDisabled()){ continue; } // get the test suite name000 suiteName = suiteList.get(i).getName(); System.out.println("Test Suite Is :" + suiteName ); reportStr = reportStr + "\nTest Suite: " + suiteName; // get a list of all test cases from the test suite caseList = suiteList.get(i).getTestCaseList(); WsdlTestCaseRunner runner; // iterating through each test case for(TestCase testcase : caseList){ //neglect the disabled/inactive test case if (testcase.isDisabled()) { continue; } //Getting the WsdlTestCaseRunner runner = new WsdlTestCaseRunner((WsdlTestCase) testcase, new StringToObjectMap(testcase.getProperties()) ); //Running the Test Case runner.run(); //Getting the result of each step List<TestStepResult> results = runner.getResults(); System.out.println("Test Case : " + testcase.getName()); //iterating through the results of the test steps executed in the test case for(TestStepResult result : results ){ TestStepStatus stepStatus = result.getStatus(); //printing the status , we can have a check here for OK , FAILED or UNKNOWN test cases System.out.println("Test Step Is : "+ result.getTestStep().getName() + " Test Step Status Is : " + stepStatus.toString()); if (result instanceof WsdlTestRequestStepResult){ if(result.getMessages().length>0){ //Getting the error messages String[] errStr = result.getMessages(); StringBuilder sb= new StringBuilder(); //iterating through the error messages for(int ii=0;ii<errStr.length;ii++){ String asserWithExcptn=errStr[ii]; String assertName= asserWithExcptn.substring(0,asserWithExcptn.indexOf("]")+1); String assertResult= asserWithExcptn.substring(asserWithExcptn.indexOf("]")+1, asserWithExcptn.length()); sb.append("The failed assertion #"+(ii+1)+" as follows.. \n"); sb.append("The assertion is: "+assertName+"\n"); sb.append("The message is:"+assertResult); sb.append("\n"); } System.out.println(sb.toString()); } } } reportStr = reportStr + "\n\tTestCase: " + testcase.getName() + "\tStatus: " + runner.getStatus() + "\tReason: " + runner.getReason(); } } //'reportStr' has the status of all the test cases System.out.println("The Execution Status as follows: \n"+reportStr); The above script will capture more specific messages(Failed assertions from each test step). Re: Announcement: Java 7 required for SoapUI Open Source 5.2 (coming soon) Hi Matt, Thanks for the update. I am unable to extract the assertion error messages of a test step while executing from Java.I am also able to get the result for Test suite, test case and step wise. Here the challenge is to get the assertion(s) and their results. The message we are extracting from step result is not even meaningful. need to implement to capture stacktrace or a meaningful error. Does it any way related to Java version. Currently I am using Java 8. Please suggest if you understood. Re: How to capture assertions from SoapUI Test steps while executing SoapUI Scripts from a java applicat Hi Rupert, I am just trying to extract the messages we are providing in assertions. If you look into the screenshot which I shared(5th line from bottom), there one such message is -> [Not Contains] Response contains token[Warning] Missing token [text text text] Thanks, Sibaram Re: How to capture assertions from SoapUI Test steps while executing SoapUI Scripts from a java applicat Hello Rupert, Thanks for quick reply. I am also able to get the result for Test suite, test case and step wise. Here the challenge is to get the assertion(s) and their results. The message we are extracting from step result is not even meaningful. need to implement to capture stacktrace or a meaningful error. If you observe the screenshot, a test step may have more than 1 assertion and upon execution we will get the shown message. Trying to capture them as well. Please suggest if you understood. Currently getting like [Ljava.lang.String;@729d6ee2 . Thanks, Sibaram How to capture assertions from SoapUI Test steps while executing SoapUI Scripts from a java applicat Hi, I am working on implementing the SoapUI project execution using Java programming. I am able to get the test suites, test cases and test steps. How can I capture the assertions defined in a step and their results. Please suggest. Solved