繁体   English   中英

在 testNG Selenium 中并行执行测试

[英]Parallel execution of tests in testNG Selenium

我无法并行调用浏览器,这些浏览器目前正在一个接一个地调用。 需要一种在并行测试中调用浏览器的方法。
注意:在我的配置 xml 文件中,我将线程数保持为 2。

下面是我的配置文件:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "testng.org/testng-1.0.dtd"; > 
<suite name="Parallel" parallel="tests" thread-count="4" > 
    <test verbose="3" name="<name>"> 
        <parameter name="platform" value ="win8"/> 
        <parameter name="browsername" value ="internet explorer"/> 
        <classes> 
            <class name="com.parallel.execution.ParallelExecution"> 
                <methods> 
                    <include name="testmethod1"/> 
                </methods> 
             </class> 
         </classes> 
     </test> 
</suite>

我们必须在简单的 testng.xml 文件中定义两个属性“ parallel ”和“ thread-count ”。 见下文:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel Execution suite" parallel="methods" thread-count="2">
  <test name="Regression 2">
    <classes>
      <class name="com.parallel.TestParallelExecution"/>
    </classes>
  </test>
</suite>

在上面,由于我们希望测试方法并行执行,我们将并行属性设置为“方法”,线程计数属性将控制要创建的最大线程数。

重新安装TestNG解决了上述问题。

您必须明确编写代码来调用浏览器作为@Before配置的一部分,以便在每次运行 @Test 时调用浏览器。 我将指定多种方法中的一种,以便您获得一个想法。

<suite name="Parallel" parallel="tests" thread-count="4" > 
    <test verbose="3" name="test1"> 
        <classes> 
            <class name="com.parallel.execution.ParallelExecution1"/>  
         </classes> 
    </test> 
    <test verbose="3" name="test2"> 
        <classes> 
            <class name="com.parallel.execution.ParallelExecution2"/>  
        </classes> 
     </test> 
</suite>

考虑一个包含 2 个tests设置为并行运行的套件文件。 我们期望 ParallelExecution1 中的@Test方法在第一个浏览器中运行,而 ParallelExecution2 中的@Test方法在第二个浏览器中运行。 因此,您需要一种机制来调用浏览器会话并运行您的测试方法。 进入BaseTest类。

public abstract class BaseTest {
    protected WebDriver driver;        

    @BeforeTest
    @Parameters({"browser"}) 
    public void init(String browser) {
        // Initialize your browser here. Code below is dummy
        driver = new FF();
    }

    @AfterTest
    public void end() {
        driver.close();
        driver.quit();
    }
}

现在在您的两个测试类中继承这个“BaseTest”。

public class ParallelExecution1 extends BaseTest {
    @Test
    public void test1() { 
    }
}


public class ParallelExecution2 extends BaseTest {
    @Test
    public void test2() { 
    }
}

现在这两个测试都有@BeforeTest@AfterTest方法,它们将调用浏览器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM