TestNg并行执行结果显示与正常执行相比较少的传递百分比

时间:2017-01-09 13:27:55

标签: selenium testng

我正在使用testng.xml文件运行我的selenium测试框架。当我在testng.xml中并行运行测试时(不同的浏览器),传递百分比非常少,即80%但是当我运行testng.xml时,传递百分比高于95.可能有人告诉我为什么它可以是这样吗?

1 个答案:

答案 0 :(得分:1)

请在您的代码中进行以下更改,之后您的并发相关问题应该消失。

BrowserHandler

  • getDriver(String browsername)内添加WebDriver driver = null作为第一行(我们现在宣布WebDriver为本地变量)
  • 删除数据成员protected WebDriver driver=null;,而是包含一个线程本地变体:private static ThreadLocal<WebDriver> driver = new ThreadLocal<>();
  • 添加一个新方法,如下所示:

public static WebDriver getDriver() { return driver.get(); }

public static void setDriver(WebDriver localDriver) { driver.set(localDriver); }

BaseClass

  • 在方法launch_App()中,将getDriver(browsername);更改为setDriver(getDriver(browsername));
  • 在方法afterMethod(ITestResult result)中,将driver.quit();更改为getDriver().quit()
  • 在方法afterMethod(ITestResult result)中,在语句setDriver(null);
  • 之后添加额外的行getDriver().quit();

现在完成测试代码,无论何时需要访问webdriver,您应该使用getDriver() [我假设您的所有测试类都将扩展BaseClass(这再次扩展{{} 1}})]

要了解有关ThreadLocal的更多信息,请参阅here