技术开发 频道

基于Selenium2和TestNG的自动化测试

  结合TestNG让自动化测试的流程掌控自如

  尽管目前的脚本结构已经很清晰,数据和测试逻辑也都分离开来,易于维护,但从测试调度的角度以及可重用的角度来看,还需要进一步改进。

  TestNG,即Testing Next Generation,下一代测试技术,是一套根据JUnit 和 NUnit思想而构建的利用注释来强化测试功能的一个测试框架,既可以用来做单元测试,也可以用来做集成测试。

  通常编写一个测试的过程有三个典型步骤:

  * 编写测试的业务逻辑并在代码中插入TestNG annotation

  * 将测试信息添加到testng.xml文件或者build.xml中

  * 运行TestNG

  在上述段落中我们的Sample scenario是一个相对长的测试用例,如果是将此用于手动测试,应该不失为一个好的测试用例,但是用在自动化测试中,我们期望可以尽可能模块化我们的脚本,以便于以后重用。模块化之后,我们就可以利用TestNG的Annotation指定该模块何时运行,以及运行顺序等,在多个测试用例中也可以重用。

  重新组织的Sample Scenario如下:

  1.打开Jazz.net: https://jazz.net/

  2.打开Login页面

  3.输入有效的登录数据

  4.进入提问页面

  5.填写提问内容

  6.提交提问

  7.验证提交是否成功

  8.Logout

  在重构脚本且给测试方法添加TestNG的Annotation之前,需要将Junit的Annotation去除掉,然后引入TestNG相关的Jar包:testng-6.*.jar,添加TestNG的Annotation。经过重构后,脚本片段如下:

基于Selenium2和TestNG的自动化测试
▲图11 添加TestNG的Annotation

  利用TestNG的优势,我们可以把一些初始化/ 收尾工作的测试方法用@BeforeSuite/@AfterSuite,@BeforeGroups/@AfterGroups, @BeforeTest/@AfterTest等标记, 也可以用一些属性控制它是否不管什么情况下都执行,定义其依赖的方法等。

  例如:

基于Selenium2和TestNG的自动化测试
▲图12 @BeforeSuite的用法

 

基于Selenium2和TestNG的自动化测试
▲图13 @AfterSuite以及属性alwaysRun的使用

  为了定义测试的执行顺序,需要建立xml文件,定义执行顺序。具体的XML中各个节点和属性的含义请参阅TestNG官方站点。

基于Selenium2和TestNG的自动化测试
▲图14 用于定义执行顺序的XML文件

  然后在main方法通过TestNG来读取xml文件以驱动测试的执行,代码片段如下:

基于Selenium2和TestNG的自动化测试
▲图15 通过程序调用TestNG

  运行测试用例之后,产生的TestNG的report如下:

基于Selenium2和TestNG的自动化测试
▲图16 TestNG自带的Report

  我们在充分了解了TestNG的各种Annotation以及如何控制其执行行为,就可以把模块化的测试方法调度的更好,也可以做到很好的重用。

47
相关文章