retryAnalyzer не перезапускает браузер - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь использовать анализатор повторных попыток для перезапуска моих тестов, если они не пройдены, однако мне нужно использовать @BeforeMethod и @AfterMethod для правильной работы тестов, но в настоящее время я использую @Test (priority = 5, retryAnalyzer = Retry.class). Как я могу повторить весь тест, включая метод до и после ??

public class join_game_already_logged_in extends ConditionsWebDriverFactory {
    private CreateGameSD firstGame;

    @BeforeMethod
    public void create_test()throws Exception{
        //Use the fixtures api to return the fixture ids for a certain date range
        GetFixtures getfixtures = new GetFixtures();
        //check that the correct status is returned for the fixture api
        String gameid = getfixtures.get_fixtures_between_dates();
        getfixtures.correct_status_returned_for_fixtures();

        //create a single fixture game using one of the fixture ids (gameid is the string returned, then changed into an  array to fit the create game call)
        this.firstGame = new CreateGameSD();
        this.firstGame.create_single_fixture_game(TestGames.test_single_game,gameid);
        this.firstGame.game_code();
        this.firstGame.created_status_is_returned_for_create_single_fix_game();
    }

    @Test (priority=5,retryAnalyzer = Retry.class)
    public void join_game_already_logged_in () throws Exception {
        Drivers.getDriver().get(Links.gameUrl+this.firstGame.game_code());
        Header header = new Header();
        header.guest_select_login();
        Login login = new Login();
        login.LoginAction(Accounts.web_user_username,Accounts.web_user_password,Accounts."ffa");
        leaderboardPlaceholder leaderboard= new leaderboardPlaceholder();
        GameId gameid = new GameId();
        gameid.game_id();
        //leaderboard.numberOfUsers();

        leaderboard.joinGame();
        FixturesScreen fixscreen = new FixturesScreen();
        fixscreen.four_picks_make();
        Thread.sleep(4000);
        fixscreen.submit_picks();
        PickReceipt pickreceipt = new PickReceipt();
        pickreceipt.your_in_the_game();
        pickreceipt.select_leaderboard();

        PickSelection pick = new PickSelection();
        pick.selectionVerification();
    }

    @AfterMethod
    public void delete_game()throws Exception{
        this.firstGame.delete_single_fixture_game();
        //Games are deleted upon test
    }
}

В настоящее время повторная попытка даже не закрывает и не открывает браузер, это очень расстраивает

1 Ответ

0 голосов
/ 10 января 2019

Это не правда. TestNG повторяет попытки @BeforeMethod и @AfterMethod в случае сбоя и повторной попытки.

Вот пример, который демонстрирует это. Я использую TestNG 7.0.0-beta3 последнюю версию TestNG на сегодняшний день.

import org.testng.Assert;
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
import org.testng.Reporter;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class TestClassSample {
  private int value = 0;

  @BeforeMethod
  public void beforeMethod(ITestResult result) {
    System.err.println("beforeMethod");
    if (value++ == 2) {
      result.setAttribute("pass", true);
    }
  }

  @Test(retryAnalyzer = IRetryYourTest.class, priority = 5)
  public void testMethod() {
    ITestResult result = Reporter.getCurrentTestResult();
    if (!result.getAttributeNames().contains("pass")) {
      System.err.println("testMethod will fail because of missing attribute ");
      Assert.fail("pass attribute is missing.");
    }
    System.err.println("testMethod passed.");
  }

  @AfterMethod
  public void afterMethod() {
    System.err.println("afterMethod");
  }

  public static class IRetryYourTest implements IRetryAnalyzer {

    @Override
    public boolean retry(ITestResult result) {
      return !result.getAttributeNames().contains("pass");
    }
  }
}

Вот результат выполнения

beforeMethod
testMethod will fail because of missing attribute 

Test ignored.
afterMethod

Test ignored.

beforeMethod
testMethod will fail because of missing attribute 

afterMethod
beforeMethod
testMethod passed.
afterMethod

===============================================
Default Suite
Total tests run: 3, Passes: 1, Failures: 0, Skips: 0, Retries: 2
===============================================


Process finished with exit code 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...