首页 > 解决方案 > testng 中的并行方法执行只执行从类中调用的最后一个方法

问题描述

我有一个包含 3 种方法的类的测试套件文件。在套件级别,我给了 parallel="methods" thread-count="3" 以便为类中的每个方法并行打开 3 个线程。

执行该套件时,将打开 3 个线程(浏览器)启动 URL,但根据方法中的步骤仅执行第 3 个线程/浏览器。对于第一个 2 个线程/浏览器没有执行任何操作。

尝试了很多来找到这个问题的答案,但找不到解决方案。以下是我使用的代码,如果我遗漏了什么,请纠正我。

基类:

public class BaseClass {

    public WebDriver driver;
    public WebDriverWait wait;

    @BeforeMethod()
    public void configure() {
        System.setProperty("webdriver.chrome.driver","C:\\SeleniumDrivers\\chromedriver.exe");
          driver=new ChromeDriver();
          driver.get("https://www.google.com");
          driver.manage().window().maximize();
          driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);          
    }

    @AfterMethod()
    public void tearDown() {
        driver.quit();
    }

}

使用 TestMethods 的类

  public class NewTest extends BaseClass{
  @Test()
  public void method1() {
      driver.findElement(By.name("q")).sendKeys("parallel");
      driver.findElement(By.name("q")).sendKeys(Keys.ENTER);
  }

  @Test()
  public void method2() {
      driver.findElement(By.name("q")).sendKeys("methods");  
      driver.findElement(By.name("q")).sendKeys(Keys.ENTER);

  }

  @Test()
  public void method3() {
      driver.findElement(By.name("q")).sendKeys("testng");
      driver.findElement(By.name("q")).sendKeys(Keys.ENTER);
  }
}

套件文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="methods">
  <test thread-count="5" name="Test">
    <classes>
      <class name="website.NewTest"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

预期结果:并行打开 3 个浏览器。第一个浏览器应该搜索“并行”。第二个浏览器应该搜索“方法”。第三个浏览器应该搜索“自动化”。

实际结果:3 个浏览器并行打开,但首先打开的 2 个浏览器确实按照该方法执行操作,最后一个打开的浏览器搜索单词“parallelmethodtestng”并关闭。根据代码打开的前 2 个浏览器不会关闭,也不会最大化。

===============================================
Suite
Total tests run: 3, Failures: 2, Skips: 0
===============================================

希望这可以帮助。

标签: javamultithreadingseleniumselenium-webdrivertestng

解决方案


这可能发生在thread-count不正确的地方。根据 TestNG 文档thread-count应该在套件标签中。请按照以下说明使用。

<suite name="My suite" parallel="methods" thread-count="5">

在此处查看 testng 文档:

http://testng.org/doc/documentation-main.html#parallel-running


推荐阅读