testNG之并发执行用例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了testNG之并发执行用例相关的知识,希望对你有一定的参考价值。
参考技术A testNG并发设置方式以 testng.xml方式 为例。在<suite>...</suite>标签设置属性parallel,parallel的值可以为: false,tests,classes,methods,instances 。其中false是默认值,代表不使用多线程并发执行,其余4个代表并发的四个维度。thread-count属性表示并发的线程数,默认是5。对应testng.xml文件中的test标签。设置parallel='tests',表示以test维度进行并发执行用例,即 同一个test标签下的用例,运行在同一线程中;不同test标签的下的用例,运行在不同线程中 。
对应testng.xml文件中的class标签,表示一个测试类。设置parallel='classes',表示以class维度进行并发执行用例,即 同一个class标签下的用例,运行在同一线程中;不同class标签的下的用例,运行在不同线程中 。
对应testng.xml文件中的method标签,表示一个测试方法。设置parallel='methods',表示以class维度进行并发执行用例,即 同一个method标签下的用例,运行在同一线程中;不同method标签的下的用例,运行在不同线程中 。
instance代表一个测试实例,要使用@Factory注解才生效, 效果和methods一样 。设置parallel='instances', 不同测试实例,运行在不同线程中 。
对于使用了数据驱动@DataProvider注解的情况,如果实现测试数据维度的并发,需要在@DataProvider注解下增加属性parallel =true。
TestNG并发兼容性测试
Web测试项目中经常进行浏览器兼容性相关的测试工作,因为兼容性测试的工作重复性相当高,所以导致手工测试效率低下测试人员积极性降低。TestNG提供了并发执行测试用例的功能,可以让测试用例以并发的形式执行,实现测试不同浏览器的兼容性测试。
下面代码中分别使用Chrome、Firefox和IE浏览器,TestNG以并发方式去百度搜索“selenium”然后校验搜索结果。
测试类中代码:
package com.selenium; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.testng.annotations.Parameters; import org.testng.annotations.BeforeClass; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.Test; public class TestNGBingfa { WebDriver driver; @Parameters("browser") @BeforeClass public void BeforeClass(String Browser){ //判断Browser等于chrome。equalsIgnoreCase()方法比较两个字符串是否相等(不区分大小写) if(Browser.equalsIgnoreCase("chrome")){ System.setProperty("webdriver.chrome.driver","E:\chromedriver.exe"); driver=new ChromeDriver(); } else if(Browser.equalsIgnoreCase("firefox")){ System.setProperty("webdriver.firefox.bin","D:\Firefox\firefox.exe"); driver=new FirefoxDriver(); } else{ System.setProperty("webdriver.ie.driver", "E:\IEDriverServer.exe"); driver=new InternetExplorerDriver(); } } @Test public void test() throws InterruptedException{ driver.get("https://www.baidu.com"); driver.findElement(By.xpath("//*[@id=‘kw‘]")).sendKeys("selenium"); driver.findElement(By.xpath("//*[@id=‘su‘]")).click(); //获取页面上的资源 String sourcetext=driver.getPageSource(); //校验搜索结果是否包含 selenium Assert.assertTrue(sourcetext.contains("selenium")); } @AfterClass public void Aftercalss(){ driver.quit(); } }
testng.xml文件的配置内容
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite" parallel="tests" thread-count="3">
<!-- 谷歌浏览器 --> <test name="chrome"> <parameter name="browser" value="chrome"></parameter> <classes> <class name="com.selenium.TestNGBingfa"/> </classes> </test>
<!-- 火狐浏览器 --> <test name="firefox"> <parameter name="browser" value="firefox"></parameter> <classes> <class name="com.selenium.TestNGBingfa"></class> </classes> </test>
<!-- IE浏览器 --> <test name="ie"> <parameter name="browser" value="ie"></parameter> <classes> <class name="com.selenium.TestNGBingfa"></class> </classes> </test>
</suite>
以上是关于testNG之并发执行用例的主要内容,如果未能解决你的问题,请参考以下文章
使用TestNG进行浏览器(IEChromeFireFox)并发兼容性测试