Возникли проблемы с SkipException, testNG, что я делаю не так? - PullRequest
0 голосов
/ 26 июня 2018

Я новичок в автоматизации пользовательского интерфейса Selen, и я пытаюсь освоить простое приложение. Я использую Java с testNG. Мне нужно интегрировать этот тест с CI, и URL-адрес среды тестирования будет отличаться при каждом развертывании. Я передаю это как параметр, разница между средой test и prod заключается в том, что в тесте не будет никакого экрана входа в систему, поэтому нет необходимости в аутентификации, но мой тест проверяет вход в систему и метод входа в систему. Мне нужно пропустить этот тест на основе предоставленного URL. Вот мой код, и проблема заключается в том, что testNG всегда предполагает, что тест был пропущен, но я вижу, что он выполняет метод входа в систему. Пожалуйста, помогите мне исправить или понять, какую ошибку я совершаю.

public class Login {

  WebDriver driver;

  //Parameter - test environment URL
  String url = System.getProperty("environment");


  @Test (priority = 1)
  public void verifyLogin() {

    //Skip verifyLogin test in non prod environments
    System.setProperty("webdriver.chrome.driver", "C://chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.manage().window().maximize();
    driver.get(url);

    if (url=="www.google.com")
    //If url matches production url then execute the test, if url doesn't match production URL then skip login test as there won't be any authentication/login in non prod
    {

        LoginPage login = new LoginPage(driver);
        login.signIn();
        Assert.assertEquals(driver.getTitle(), "Application Name", "Login failed,");
        String title = driver.getTitle();
        System.out.println("Page title is " + title);
        driver.close();
    }

    else if (url!="www.google.com"){

      throw new SkipException("Skipping this test");

    }

  }
  @Test(priority = 2)
  public void userKey() {

      System.setProperty("webdriver.chrome.driver", "C://chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      driver.manage().window().maximize();
      driver.get(url);

      //If URL equals prod then call the login method to be able to login to the app else just execute the userKey method without having the need to login

      if (url=="www.google.com");
      {
        LoginPage login = new LoginPage(driver);
        login.signIn();
      }

      AccountManagementPage userKey = new AccountManagementPage(driver);
      userKey.key();
      driver.close();
  }

}

1 Ответ

0 голосов
/ 27 июня 2018

Очень точный вариант использования хорошо объяснен здесь без выброса SkipException.

Идея состоит в том, чтобы создать пользовательскую аннотацию для методов, которые будут пропущены, и прочитать методы, используя IMethodInterceptor - решите выполнить или нет за кадром.


Обновлено для вопроса в разделе комментариев:

Вам не нужно беспокоиться о классе TestEnvironment или TestParameters. Просто используйте здесь логику производственной проверки.

Predicate<IMethodInstance> isTestExecutingOnProduction = (tip) -> {
    return system.getProperty("env").
                              .equals("<production check here>");
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...