目前,我有3个班
testbase->负责配置运行套件中所需的所有全局变量(例如:webdriver config)
在一个单独的类中,每个类中有2个测试用例扩展了测试库
问题在于,当第二个测试用例开始调用其数据提供程序时,通过运行testng.xml,testbase中的所有全局变量都会被重置为null
下面是实现和输出的示例
<?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'"); .....
}
使用第一个测试用例(正常工作)调用数据提供程序时,请在此处输入图像描述
使用第二个测试用例(不工作)调用数据提供程序时的变量值请在此处输入图像描述
1条答案
按热度按时间rseugnpd1#
上述问题与数据提供程序无关。您需要更改testng.xml
或
使全局变量为静态。我不推荐这种方法。