前面文章细心的小伙伴会发现宏哥在运行测试用例的时候有的是在main方法下,而有的不需要用main方法去执行用例,那么为什么有的就不需要在main方法下就能够成功运行测试用例了。这就需要单元测试框架的支持,这篇宏哥就来简单介绍TestNG单元测试框架的安装和基本使用。
TestNG按照官方的定义:TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便。
TestNG是一个测试框架,它能覆盖不同层级的测试,例如,单元测试,集成测试,端对端测试等。我们可以把Selenium和TestNG结合一起,在Eclipse中用Java写TestNG脚本。
1)注释,很多注释提供
2)支持数据驱动测试(@DataProvider)
3)支持变量
4)自动生成测试报告
5)通过配置testng.xml,我们可以只执行测试失败的用例
6)支持很多IDE工具(Eclipse等)
7)默认JDK支持监控运行和日志
8)独立的程序服务器测试方法(API)
1)三者都是独立于测试框架,在市场上都可以免费得到。
2)TestNG和Junit在JAVA上使用,Nunit在C#上使用
3)Junit是Eclipse自带工具,TestNG需要自己安装插件
4)相对TestNG而言,Junit的注释很少
5)Junit不能生成html格式报告,TestNG能生成丰富的html报告
其他对比就不讲了,有兴趣可以到各自官网去查看。
在官网上部导航区域点击“Download”链接,该页面介绍了集成TestNG的不同方式。
在“Eclipse plug-in”区域介绍了两种Eclipse安装插件的方式。
硬性要求:JDK1.7以上版本、Eclipse4.2以上版本。
Java 1.7+ is required for running the TestNG for Eclipse plugin.
Eclipse 4.2 and above is required. Eclipse 3.x is NOT supported any more, please update your Eclipse to 4.2 or above.
两种在线安装方式:
1)打开Eclipse Help ->MarketPlace,在搜索框里面输入TestNG搜索,然后安装TestNG插件。
2)点击“Install”,稍等几分钟,等待插件下载
3)下载成功后,点击“Confirm”,进行安装(其中第二个Maven项目可选择安装也可以不安装,但是宏哥建议都安装上)
4)稍等一会等待安装
1) 通过update site也可以进行插件的安装,方法是:在Eclipse中点击Help菜单,选择Install New Software选项,在弹出页面中输入安装地址:http://beust.com/eclipse即可安装。
受网络等因素影响,在线安装方式速度比较慢,可以通过如下方式离线安装TestNG插件。
1)通过testng下载网址找到插件下载地址,
2)浏览器直接访问网址, http://beust.com/eclipse
3)选择最下部的zipped文件夹链接;
4)选择版本,如:“7.0.0.201908240652/”
5)点击超链接,即可下载离线安装文件。
6)解压压缩包,文件目录如下图所示。可以把features和plugins中的内容分别拷贝到eclipse对应文件夹;
或把解压后的整个目录拷贝到dropins中。
验证是否安装成功:
a) 打开命令行,到当前eclipse的目录下,输入eclipse -clean,重新启动eclipse,这样eclipse就会加上新的插件了。 b) 如果插件不能生效,则请将eclipse\configuration\org.eclipse.update目录删除后再启动eclipse。7) 不解压文件,通过eclipse的Install new software安装。
8)点击Add,弹出Install Repository对话框,填写Name,点击“Archive”按钮,选择本地要安装的Jar或者Zip文件,如下图:
9)点击OK,如下图:
10)根据需求勾选上列表框中的安装项,点击“Next”,然后根据提示一直往下操作,直到Finish,这样就完成了。
1)打开Eclipse,新建-other,选择“TestNG——>TestNG Class”。
2)出现上边截图这个说明插件安装成功。
至此环境搭建完成,可以开始写测试的case了。
1)在一个包下,鼠标右键,New->other,点击TestNG,然后选择TestNG class,如下图所示:
2)点击Next,class name命名为:FirstTestNgClass,勾选Beforeclass和Afterclass,如下图所示:
3)点击“Finish”完成类的创建。
在BeforeClass中写启动浏览器脚本。在AfterClass中写退出浏览器代码,在@Test中写我们测试脚本。记住,所有有关测试脚本,都需要写到@Test下的方法,也就是说,你写这个函数或者方法是关于测试脚本的,那么你就要在该方法前面加上@Test这个注释,可以添加多个@Test的测试函数。
宏哥把启动浏览器和浏览器最大化放在了setup方法里,一般setup方法是写一些用例的前置条件,而@Test注释的方法才是我们测试脚本,afterClass方法里一般写清除测试数据之类的操作,webUI自动化测试一般写退出浏览器操作。
package lessons; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.Test; import org.testng.annotations.BeforeClass; import org.testng.annotations.AfterClass; /** * @author 北京-宏哥 * * @公众号:北京宏哥 * * 《手把手教你》系列基础篇(七十二)-java+ selenium自动化测试-框架设计基础-TestNG简单介绍(详解教程) * * 2022年2月21日 */ public class FirstTestNgClass { WebDriver driver; @Test public void OpenBaidu() { driver.get("https://www.baidu.com"); driver.findElement(By.id("kw")).sendKeys("Selenium"); driver.findElement(By.id("su")).click(); } @BeforeClass public void beforeClass() { System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe"); driver = new ChromeDriver(); driver.manage().window().maximize(); } @AfterClass public void afterClass() { try { Thread.sleep(2000); driver.quit(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
1)运行代码,右键Run AS->TestNG Test,控制台输出,如下图所示:
2)运行代码后电脑端的浏览器的动作,如下小视频所示:
<iframe frameborder="0" height="100%" src="https://streamja.com/embed/jemz3" style="width: 100%; height: 100%; position: absolute" width="100%"></iframe>TestNG自带测试报告,每次运行TestNG都会生成一个测试报告,你可以在运行结束后,右键你eclipse项目-刷新,然后就可以看到项目的根目录下生成一个test-output的文件夹,你可以右键open with->Web Browser打开emailable-report.html,如下图所示:
好了,时间不早了,今天关于TestNG的安装和简单使用就介绍到这里,下面几篇文章都会陆续介绍TestNG的使用,基本上这些使用我们在框架设计里都会涉及。