Запуск неудачных тестовых наборов с помощью TestNG в Selenium WebDriver
Иногда тестовые наборы могут завершаться сбоем при запуске автоматических тестовых сценариев. Причина может быть любой (например, проблема с сетью, проблема с системой или проблема с браузером), но вам, как тестировщику автоматизации, необходимо снова выполнить тестовые сценарии. Вот решение для запуска неудачных тестовых случаев с помощью TestNG в Selenium.
Вы не хотите сделать снимок экрана при ошибке и прикрепить его к своему отчету?
Да, как тестер, мы должны зафиксировать неудачные шаги. Этот пост расскажет вам, как сделать снимок экрана и вставить его в экстентные отчеты.
Мы можем выполнить неудачные тестовые случаи двумя способами.
Случай 1. Выполнение неудачных тестовых случаев с помощью TestNG в Selenium — с помощью «testng-failed.xml»
Действующие шаги:
После первого запуска автоматизированного тестового прогона. Щелкните правой кнопкой мыши проект — нажмите «Обновить»
Будет создана папка с именем «test-output». Внутри папки «test-output» вы можете найти «testng-failed.xml».
Запустите «testng-failed.xml», чтобы снова выполнить неудачные тестовые случаи.
Кейс 2. Выполнение неудачных тестовых случаев с использованием TestNG в Selenium — путем реализации TestNG IRetryAnalyzer.
Создайте класс для реализации IRetryAnalyzer. Здесь я создаю класс (скажем, RetryFailedTestCases) и реализую IRetryAnalyzer.
RetryFailedTestCases реализует IRetryAnalyzer:
123456789101112131415161718192021
пакет программного обеспечения TestingMaterial; импортировать org.testng.IRetryAnalyzer; импортировать org.testng.ITestResult; открытый класс RetryFailedTestCases реализует IRetryAnalyzer { private int retryCnt = 0; //Вы можете упомянуть maxRetryCnt (Maximiun Retry Count) в соответствии с вашими требованиями. Здесь я взял 2. Если есть какие-то неудачные тесты, то он выполняется два раза private int maxRetryCnt = 2; //Этот метод будет вызываться каждый раз, когда тест не пройден. Он вернет TRUE, если тест не пройден и его необходимо повторить, в противном случае он вернет FALSE public boolean retry(ITestResult result) { if (retryCnt < maxRetryCnt) { System.out.println(“Retrying” + result.getName() + ” снова, и счет равен ” + (retryCnt+1)); повторить попыткуCnt++; вернуть истину; } вернуть false; } }таблица>
Давайте создадим еще один класс RetryListenerClass, реализуя интерфейс IAnnotationTransaformer. Метод преобразования вызывается для каждого теста во время выполнения теста. Простая реализация этого интерфейса IAnnotationTransformer может помочь нам установить setRetryAnalyzer для ITestAnnotation. Добавьте указанное выше имя класса (RetryFailedTestCases.class) в приведенную ниже программу. Этот интерфейс выполняет свою работу во время выполнения, добавляя аннотации к методам тестирования.
пакет программного обеспеченияTestingMaterial;импорт java.lang.reflect.Constructor;импорт java.lang.reflect.Method; импортировать org.testng.IAnnotationTransformer; импортировать org.testng.IRetryAnalyzer; импортировать org.testng.annotations.ITestAnnotation; открытый класс RetryListenerClass реализует IAnnotationTransformer { @Overridepublic void transform (ITestAnnotation testannotation, класс testClass, конструктор testConstructor, метод testMethod) {IRetryAnalyzer retry = testannotation.getRetryAnalyzer(); if (retry == null) {testannotation.setRetryAnalyzer(RetryFailedTestCases.class);} }}
Давайте посмотрим на пример, выполнив простые тесты ниже. Здесь я взял два тестовых примера: Test1 и Test2.
Тестовый пример 1:
1234567891011121314
package softwareTestingMaterial; импортировать org.testng.Assert; импортировать org.testng.annotations.Test; public class Test1 { @Testpublic void test1(){System.out.println(“Test 1”);Assert.assertTrue(true);}}
Тестовый пример 2:
123456789101112
пакет программного обеспечения TestingMaterial; импортировать org.testng.Assert; импортировать org.testng.annotations.Test; открытый класс Test2 {@Testpublic void test2(){System.out.println(“Test 2”);Assert.assertTrue(false);}}
Судя по строкам кода в Test2, это не удастся. Таким образом, он (Test2) будет выполнен 2 раза (мы взяли maxRetryCnt за 2) в Retry Class. Сначала давайте включим нижеупомянутый Listener в файл testng.xml. Ниже указан синтаксис для добавления прослушивателя для RetryListnereClass
Окончательный файл testng.xml должен выглядеть следующим образом:
12345678910111213141516171819202122
<?xml version=”1.0″ encoding=”UTF-8″?><!DOCTYPE suite SYSTEM “http://testng.org/testng-1.0.dtd”><suite name=”My Suite”> <listeners> <listener class-name=”softwareTestingMaterial.RetryListenerClass”/> </listeners> <test name= “Test1″><classes><class name=”softwareTestingMaterial.Test1″ /></classes></test> <!– Test –><test name=”Test2″>< классы><class name=”softwareTestingMaterial.Test2” /></classes></test> <!– Test –> </suite> <!– Suite –>
< p> Выполните testng.xml. Вот результат, который я получил. В приведенном ниже результате вы могли видеть, что тест 2 выполняется три раза, поскольку мы упомянули «maxRetryCnt = 2». Несмотря на то, что у нас всего 2 теста, в результате мы можем обнаружить, что общее количество прогонов тестов равно 4.
1234567891011121314
[TestNG] Выполняется: D:SeleniumworkspaceSeleniumProjecttestng.xml Test 1Test 2Retrying test2 еще раз, и счет равен 1Test 2Retrying test2 еще раз и count is 2Test 2 ============================================== Everjobs SuiteВсего тестов: 4, сбоев: 1, пропусков: 2=================================== ===========таблица e>
Таким образом, мы могли запускать неудавшиеся тестовые случаи, используя TestNG в Selenium.