Utheen Ответов: 0

Как повторно запустить все методы в одном тесте, даже если только один метод не удался, в 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
		
	

}

0 Ответов