【问题标题】:How to run parallel Test case in Selenium + TestNG如何在 Selenium + TestNG 中运行并行测试用例
【发布时间】:2014-12-18 12:10:08
【问题描述】:

我有一个测试脚本如下,我需要知道的是如何让它在不同的浏览器中同时运行,但测试数据不同,

我想要的正是我想要在 Firefox 和 Internet Explorer 中的测试用例一的并行实例,但我想再次为它使用不同的数据

例如: - 带有“username1”和“password1”的Firefox

-Internet Explorer 'username2' 和 'password2'

这就像在不同的浏览器中使用不同的用户名和密码并行登录GMAIL,但不是按顺序登录。

测试用例:

public class Gmail 
{
    private WebDriver driver;

    @BeforeClass
    public void setup()
    {
        driver = new FirefoxDriver();
        driver.get("http://www.gmail.com");
    }

    @Test
    public void search()
    {
        WebElement element = driver.findElement(By.name("username"));
        element.sendKeys("username");
        WebElement element2 = driver.findElement(By.name("pass"));
        element2.sendKeys("password");
        element2.submit();
    }

    @Test
    public void compose()
    {
        driver.findElement(By.name("compose")).click();
    }

    @AfterClass
    public void exit()
    {
        driver.quit();
    }
}

请提出您的建议将对我的项目有所帮助。

【问题讨论】:

标签: selenium grid webdriver selenium-rc testng


【解决方案1】:

执行此操作的步骤:

  1. 在 testNG.xml 中将所需的值作为参数传递 - 在您的情况下,您需要 browserName、userName 和密码。

  2. 在 testNG.xml 中使用不同的用户名和密码参数创建 2 个单独的“测试”标签

       <test name="Test on FF">
        <parameter name="browserName" value="Firefox" />
        <parameter name="userName" value="user1" />
        <parameter name="password" value="pass1" />
       <classes>
          <class>name="Gmail"</class>
         </classes>
       </test>
       <test name="Test on IE">
        <parameter name="browserName" value="IE" />
        <parameter name="userName" value="user2" />
        <parameter name="password" value="pass2" />
         <classes>
          <class>name="Gmail"</class>
         </classes>
       </test>
    
  3. 将“套件”标签定义为&lt;suite thread-count="2" name="Suite" parallel="tests"&gt;

  4. 通过@Parameters ({"browserName","userName","password"})访问和使用您的@Test方法中的那些并实例化相应的驱动程序

【讨论】:

  • 感谢 Surya,如果我要使用大量迭代,请您简要介绍一下,因为上述 XML 很难管理。
【解决方案2】:

如果您拥有大量数据,则可以将其外部化。将其移至 excel、yaml 或您喜欢的任何格式。将其用作 @DataProvider 方法的输入。在@DataProvider 中,从您选择的格式中读取所有值并返回。在您的 testmethods 中指定 dataprovider 方法。阅读有关数据提供者的更多信息here。在参数值中给出 excel 表。您可以通过设置并行运行数据提供程序 平行于真。确保您的驱动程序实例是 Threadlocal 值或为每个方法实例化,否则并行运行可能会导致失败。

【讨论】:

  • 非常感谢 niharika_neo,我正在尝试。
【解决方案3】:

我在http://www.ufthelp.com/2014/12/Parallel-execution-tests-in-testNG-eclipse.html找到了带有工作代码的解决方案

XML 文件将如下所示

<suite name="Suite" parallel="tests" thread-count="2">
 <test name="Run in Firefox">
  <parameter name="browser" value="firefox"></parameter>
  <parameter name="userName" value="Test1"></parameter>
  <parameter name="Password" value="Pwd1"></parameter>
  <classes>
   <class name="srcTest.ParallelTesting"/>
  </classes>
 </test>
 <test name="Run in chrome">
  <parameter name="browser" value="chrome"></parameter>
  <parameter name="userName" value="Test2"></parameter>
  <parameter name="Password" value="Pwd2"></parameter>
  <classes>
   <class name="srcTest.ParallelTesting"/>
  </classes>
 </test>
</suite> 

Java 代码:-

 @Test
 @Parameters({"userName","Password"})
 public void login(String userName,String Password){

   --Your Code--
 }

 @BeforeClass<br/>
 @Parameters({"browser"})
 public void BeforeClass(String browser) throws Exception {

  --Your code--

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-24
    • 2018-09-29
    • 2017-07-22
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    相关资源
    最近更新 更多