На данный момент у меня 3 класса
- Тестовая база —> которая отвечает за настройку всех глобальных переменных, необходимых в работающем пакете (например, конфигурация веб-драйвера)
- 2 тестовых примера, каждый в отдельном классе, расширяют тестовую базу
- Проблема заключается в том, что при запуске TestNG.xml все глобальные переменные в тестовой базе сбрасываются до нуля при выполнении второго TestCase -> ровно тогда, когда второй тестовый пример начинает вызывать своего поставщика данных.
Вот пример реализации и вывода
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test thread-count="5" name="Test">
<classes>
<class
name="Visual_Automation_Team.Visual_Automation_DevOps.ValidateLinks">
<methods>
<include name="CheckURLValidity" />
</methods>
</class>
<class
name="Visual_Automation_Team.Visual_Automation_DevOps.ConsoleCheck">
<methods>
<include name="CheckConsoleErrors" />
</methods>
</class>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
TestBase.Class -> для настройки набора тестов
public class TestBase
{
//Those variables get reset to null with the second call of the data provider
WebDriver driver;
ConfigurationsController configurationController;
ResolutionsInfo resolutionInfo;
SetupEnvironment setupEnvironment;
String automatedBrowser;
ValidWebpagesContainer validPagesContainer;
ExcludedWebpagesContainer excludedPagesContainer;
IncludedWebpagesContainer includedPagesContainer;
Webpage basePage;
@BeforeTest
public void Initialize()
{
System.out.println("Inside Initialize");
configurationController = new ConfigurationsController();
excludedPagesContainer = new ExcludedWebpagesContainer();
includedPagesContainer = new IncludedWebpagesContainer(); .....
}
//Data provider that get called before executing each testcase we have
@DataProvider(name="validLinksDP")
public Object[] ValidLinksDataProvider()
{
System.out.println("inside Data Provider");
return validPagesContainer.getValidPages().toArray();
}
}
Первый тестовый пример
public class ValidateLinks extends TestBase
{
@Test(priority = 1, enabled = true , dataProvider = "validLinksDP")
public void CheckURLValidity(Object currentPage)
{
String currentPageUrl = ((Webpage)currentPage).getPageUrl();
driver.navigate().to(currentPageUrl);
System.out.println("Inside 'ValidateLinks'"); .....
}
второй тестовый пример
public class ConsoleCheck extends TestBase
{
@Test(priority = 2, enabled = true , dataProvider = "validLinksDP")
public void CheckConsoleErrors(Object currentPage)
{
String currentPageUrl = ((Webpage)currentPage).getPageUrl();
driver.navigate().to(currentPageUrl);
System.out.println("Inside 'CheckConsoleErrors'"); .....
}
Значение переменных при вызове поставщика данных с первым тестовым примером (работает правильно) введите здесь описание изображения
Значение переменных при вызове поставщика данных со вторым тестовым примером (не работает) введите здесь описание изображения