[英]How to run parallel Test case in Selenium + TestNG
我有一个如下的测试脚本,我需要知道的是如何使它同时在不同的浏览器中运行,但要使用不同的测试数据,
正是我想要的是我想要Firefox中的测试用例的并行实例,以及Internet Explorer中的另一个,但是我想为其使用不同的数据
例如:-带有'username1'和'password1'的Firefox
-Internet Explorer“用户名2”和“密码2”
这就像在不同的浏览器中以不同的用户名和密码并行登录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();
}
}
请提出您的建议对我的项目有帮助。
步骤如下:
在testNG.xml中传递所需的值作为参数-在这种情况下,您需要browserName,userName和password。
在testNG.xml中使用不同的userName和password参数创建2个单独的“ test”标签
<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>
将“ suite”标签定义为<suite thread-count="2" name="Suite" parallel="tests">
@Parameters ({"browserName","userName","password"})
访问并使用@Test方法中的那些,并实例化相应的驱动程序 如果您拥有大量数据,则可以将其外部化。 将其移动到excel,yaml或任何您喜欢的格式。 使用它作为您@DataProvider方法的输入。 在@DataProvider中,从您选择的格式中读取所有值并返回。 在您的测试方法中,指定dataprovider方法。 在此处阅读有关dataproviders的更多信息。 在参数值中提供Excel工作表。 您可以通过将parallel设置为true来并行运行dataprovider。 确保您的驱动程序实例为Threadlocal值或针对每种方法实例化,否则并行运行可能会导致失败。
我在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--
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.