Как повторно запустить все методы в одном тесте, даже если только один метод не удался, в selenium testng
Привет,
В настоящее время я работаю с платформой автоматизации тестирования. У меня есть набор тестов, содержащий разное количество тестов, которые имеют разные методы. Я должен найти способ повторно запустить полный тест, если какой-либо из методов в этом тесте потерпит неудачу.
например,
<test name="TestFrw_TC24(1)"> <parameter name="InputExcelPath" value="TestFrw_TC24(1).xls" /> <parameter name="myUsername" value="TestFrwagent1" /> <parameter name="myPassword" value="TestFrwagent1" /> <classes> <class name="com.TestFrw.testcases.transactions.Mainflow"> <methods> <include name="testLogin" /> <include name="testSearch" /> <include name="testSummary" /> <include name="testWithdraw" /> </methods> </class> </classes> </test>
если метод "testSearch" однажды потерпел неудачу, я хочу снова выполнить весь тест (от testlogin до testWithdraw)
пожалуйста, помогите мне найти решение, чтобы повторить весь тест, если какой-либо из методов не удался. Я использую java для кодирования.
Что я уже пробовал:
Я использовал RetryAnalyzer и RetryListner. Но он повторяет выполнение только неудачного метода.
Мой Ретрианализатор классифицируется следующим образом.
package com.TestFrw.utilities; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.testng.IRetryAnalyzer; import org.testng.ITestResult; public class RetryAnalyzer implements IRetryAnalyzer { private int count = 0; private int maxCount = 4; // set your count to re-run test protected Logger log; private static Logger testbaseLog; static { PropertyConfigurator.configure("test-config/log4j.properties"); testbaseLog = Logger.getLogger("TestclassName"); } public RetryAnalyzer() { testbaseLog.trace( " ModeledRetryAnalyzer constructor " + this.getClass().getName() ); log = Logger.getLogger("TestclassName"); } @Override public boolean retry(ITestResult result) { testbaseLog.trace("running retry logic for '" + result.getName() + "' on class " + this.getClass().getName() ); if(count < maxCount) { count++; System.out.println("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"+"Retrying test " + result.getName() + " with status " + getResultStatusName(result.getStatus()) + " for the " + (count+1) + " time(s)."); return true; } return false; } public String getResultStatusName(int status) { String resultName = null; if(status==1) resultName = "SUCCESS"; if(status==2) resultName = "FAILURE"; if(status==3) resultName = "SKIP"; return resultName; } }
Мой класс RetryListner выглядит следующим образом.
package com.TestFrw.utilities; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import org.testng.IAnnotationTransformer; import org.testng.IRetryAnalyzer; import org.testng.annotations.ITestAnnotation; public class RetryListener implements IAnnotationTransformer { @Override public void transform(ITestAnnotation testannotation, Class testClass, Constructor testConstructor, Method testMethod) { IRetryAnalyzer retry = testannotation.getRetryAnalyzer(); if (retry == null) { //testannotation.setRetryAnalyzer(retry.getClass()); testannotation.setRetryAnalyzer(RetryAnalyzer.class); } } //public void transform(ITestAnnotation testannotation, Class arg1, Constructor arg2, Method arg3) { // TODO Auto-generated method stub }