Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

WebDriver + TestNG + dependsOnMethods не работает.


(Dmitriy Karassev) #1

День добрый!
У меня проблема с выше обозначенной связкой. Код на Java. Привожу пример пакета (запуск MAVEN-ом).

@Test
public void stage002() throws Exception {

    TraceLogBase("C");
    Reporter.log("<p>Creating new test-fields [group]</p>");
    ClickBy(false, null, By.linkText("Add New Group"));
    InputFieldTesting("Name:", SAL.get("Name_01"));
    ClickBy(false, null, By.xpath("//td[.//select[@id='select_id']]/input"));
    ChooseDM(driver, "//*[@id='select_id']", "Home");
    SubSaveSystem(false, "//*[@name='save']", SAL.get("Name_01"));		
}

@Test(dependsOnMethods = {"stage002"})
public void stage003() throws Exception {

    TraceLogBase("C");
    Reporter.log("<p>Creating new test-fields [user]</p>");
    Redirect("/AdminUserManager.html");
    Thread(2500);

    ClickBy(false, null, By.linkText("Create New User"));
    InputFieldTesting("Username:", SAL.get("Username_01"));
    InputFieldTesting("Password:", SAL.get("Password_01"));
    InputFieldTesting("Retype Password:", SAL.get("Password_01"));
    ChooseDM(driver, "//form[@id='add_form']/.//select[@name='groups']", SAL.get("Name_01"));
    InputFieldTesting("First Name:", SAL.get("FName_01"));
    InputFieldTesting("Last Name:", SAL.get("LName_01"));
    InputFieldTesting("Email:", SAL.get("Username_01"));
    InputFieldTesting("Phone:", SAL.get("Phone_01"));
    SubSaveSystem(true, "//*[@name='save']", SAL.get("Username_01"));		
}

При запуске открывается браузер FF, но при этом в нижнем правом углу горит надпись “WebDriver”, при наведении на которую идет тултип с сообщением о невозможности доступа драйверу до браузера.
Стоит заметить, что при запуске теста с этим фрагментом без указанных зависимостей, все работает отлично.


(Александр Таранков) #2

Надпись WebDriver показывается в браузере (FF) всегда когда тесты выполняются под WebDriver и никакой зависимости от dependsOnMethods там нет. Проблема в чём-то другом.

Как проблема выглядит непонятно. Тебя просто смущает тултип всплывающий?

Возможная причина: ты запускаешь один единственный тест stage003 и в конфиг TestNG прописывается запуск одного только этого теста. При этом, в момент выполнения TestNG обнаруживает, что тест зависит от stage002, которого в конфиге запуска нет. И на этом подвисает, выдает Exception или что-то другое, о чём ты ничего не написал.


(Dmitriy Karassev) #3
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Java_ProjectsM_V.003.014">
    <test verbose="2" name="CMS_Administration_UserManager_014">
    	<classes>
      		<class name="CMS_Administration_UserManager014_U05.TestIncludeCommand001_14"/>
    	</classes>
    </test>
</suite>

Это .xml запуска сьюта - тут просто указан сам пакет. Кроме ошибок о не найденных полях ввода и элементов веб-страницы, ничего другого в логи не пишется. Поэтому не знаю куда копать.

В том то и дело: я писал, что надпись “горит” (красным цветом - это значит, что удаленный контроль не доступен). Обычно же эта надпись отображается черным цветом.

UPD: Решил не полагаться на отчет в консоли, а оставить прогонку теста до завершения и почитать итоговые отчеты. В общем, оказывается все работает, просто у меня не указана в зависимостях второй стадии первая - как итог, сначала идет попытка выполниться второй стадии, потом идет запуск первой и только после этого стартует третья. Иными словами я оказывается совсем не правильно понимал систему создание зависимостей. Есть мысли как это править?


(vmaximv) #4

А что собственно вам не понятно? dependsOnMethods гарантирует выполнения метода НЕ ранее его зависимостей и скип метода, если одна из зависимостей зафейлилась. Что мега удобно при распараллеливании тестов - т.к. построение графа порядка выполнения testng берет на себя.
На вашем примере: допустим мы запускаем тесты в два потока => одновременно стартуют stage001 и stage002 => после выполнения stage002 (причем stage001 в этот момент может продолжать выполняться) стартует stage003.


(Александр Таранков) #5

Как править что? Ты ж сказал всё работает. Пока единственная проблема, о которой ты сообщил, это

Определись с вопросом, который хочешь задать


(Dmitriy Karassev) #6

Товарищ vmaximv дал достаточное объяснение. Думаю, что на этом все :slight_smile: Прошу прощения за глуповатые вопросы.