• 第四章 TestNG测试用例分步解析(下)


    ------Web自动化测试之Webdriver+TestNG--从零到熟练(系列)

    4.3 自己编写测试用例

    还以上面的那个众筹登录的测试用例为例,我们来讲解一下如何自己编写测试用例

    (1)              在第二章我们创建了一下java工程Test,那下面我们就在这个工程中编写我们的测试用例。右击工程文件夹下的Src文件夹,选择“newà”other…”,在打开的对话框中选择“TestNGà”TestNG Class”,单击”next”。如图4.3.1所示:

     第四章 <wbr>TestNG测试用例分步解析(下)

    4.3.1 新建TestNG Class文件

    2)在打开的对话框中,输入“class nameà”LoginDemo”,然后选择我们测试用例用到的函数@BeforeTest,@AfterTest,然后单击finish按钮,则会创建对应的TestNG类文件。如图4.3.2所示:

     

    第四章 <wbr>TestNG测试用例分步解析(下)
    4.3.2创建TestNG 类文件

    3)此时我们创建的LoginDemo.java的文件内容如下:

    package Src;

     

    import org.testng.annotations.Test;

    import org.testng.annotations.BeforeTest;

    import org.testng.annotations.AfterTest;

     

    public class LoginDemo {

      @Test

      public void f() {

      }

      @BeforeTest

      public void beforeTest() {

      }

     

      @AfterTest

      public void afterTest() {

      }

     

    }

    只有一个框架,下面我们就需要填写相应的代码进去。测试用例执行前的操作放到beforeTest()函数中,测试用例执行后的清理操件放到afterTest()函数,而具体的测试用例放到f()函数中。

    4)结合我们通过Selenium IDE录制的操作步骤,加上我们自己的优化,最终我们编写的的自动化测试用例代码如下:

    //LoginDemo.java

    package Src;

     

    import static org.junit.Assert.assertEquals;

     

    import org.testng.annotations.Test;

    import org.testng.annotations.BeforeTest;

    import org.testng.annotations.AfterTest;

    import org.openqa.selenium.By;

    //添加引用

    import org.openqa.selenium.WebDriver;

    import org.openqa.selenium.firefox.FirefoxDriver;

     

    public class LoginDemo {

      private WebDriver driver;

      private String baseUrl;

     

      @BeforeTest

      public void beforeTest() {

             driver = new FirefoxDriver();

             baseUrl = "http://www.zhongchou.com/";

             }

     

      @Test

      public void testlogin() throws Exception {

             driver.get(baseUrl);

             Thread.sleep(2000);//等待打开首页

             driver.findElement(By.id("headerLogin")).click();

             driver.findElement(By.name("username")).clear();

             driver.findElement(By.name("username")).sendKeys("18311338905");

             driver.findElement(By.name("user_pwd")).clear();

             driver.findElement(By.name("user_pwd")).sendKeys("a000000");

             driver.findElement(By.cssSelector("a.zc")).click();

             Thread.sleep(3000);//等待登录成功

             //验证登录是否成功

             assertEquals("潜龙9527", driver.findElement(By.cssSelector("div.siteLgInner")).getText());

             //退出登录

             driver.get(baseUrl + "usernew-loginout");

      }

     

     

      @AfterTest

      public void afterTest() {

             //关闭浏览器

             driver.quit();

      }

     

    }

    代码分析:

    Ø  首先为了清晰,我们将beforeTest()函数调整到具体的测试函数之前,这样一直就能看出先执行这个函数。

    Ø  更改具体测试函数名f()testlogin(),这样比较清楚,而且在后续产生测试报告的时候,不至于产生混淆。

    Ø  具体的操作步骤和Selenium IDE录制的一样,在此没有做出优化,以方便大家理解。

    Ø  增加了Thread.sleep()函数。这个函数的功能就是等待参数毫秒,在页面操作过程中,有延迟现象,所以适当添加这个函数是确保自动化测试用例执行成功的必要条件。

    5)运行测试用例文件,右击这个文件,“Run as-->”TestNG test”,查看运行输出结果。如图4.3.3所示:

     

    第四章 <wbr>TestNG测试用例分步解析(下)
    4.3.3 测试用例执行结果

       此时的程序简洁,运行比较快速。这才是希望中的自动化测试用例,不过好像也没有体现出TestNG的特点,TestNG有很多的优势嘛!不要着急,下面的章节我们将一步步讲解。

    4.4 测试用例编写过程中常见的问题

       在我们编写测试用例的过程中,会经常遇到一些问题,这些问题会影响到我们测试用例的质量。所以我们要在编写之前就在脑海里对它们提高警惕,避免这样的错误:

    (1)随意命名测试用例类和函数名。

    这涉及到编码规范的问题,变量,函数,类的命名必须有意义,不可随意命名。在自动化测试用例中,不正规的命名,会影响测试用例的可读性,而且一旦执行出错,不便于定位问题。

    (2)前提条件写到具体的测试用例中。

    beforeTest()函数是每个测试用例执行之前都会调用的,所以这个函数里面写的是所有测试用例都要用到的前提条件。而有很多初学的同学,会把测试步骤都写到具体的测试函数中,这样就会造成把前提条件写了很多次,不符合代码重用机制。

    (3)测试用例耦合度高。

    测试用例之间应该没有太多的耦合性,各自执行完测试用例,判断检测点之后,退出浏览器。这样不影响其他测试用例的执行,如果我们测试用例之间有耦合,如使用相同的测试账号的话,单线程执行没有问题,多线程运行的时候,就会造成死锁或是相互影响。

    (4)执行完测试用例,不对测试数据进行清理。

    执行完测试用例后,要对测试数据是行清理。而执行线上回归任务的自动化测试用例原则是不产生测试数据的。如果本次执行的测试数据不清理,下次就算执行失败了,检测执行结果的时候,如果检测到上次产生的测试数据了,也不会报错的。

    (5)测试用例中没有注释。

    不管是什么样的语言写的程序,都要求有注释的。由于我们做自动化测试,大多没有经过详细的编码规范的培训,所有不喜欢写注释。可是如果不加注释,时间长了,你就不清楚这个测试用例是做什么的了,需要逐步地去看代码分析,多费时啊!如果加上注释,只需要看一下注释即可。

    4.5 本章小结

        本章我们以众筹网的登录为例,讲解了用Selenium IDE录制自动化测试用例和手工编写自动化测试用例的方法。从具体的实例来分析如何使用WebDriver Api来完成我们的测试用例,以此来加深你对自动化测试用例的了解。最后我们还讲解了,自动化测试用例编写过程中应该注意的事情,从一开始就规范自己的代码,严格要求自己,养成良好的编码习惯!

  • 相关阅读:
    Djang下载虚拟环境设置
    数据类型和变量
    zedboard如何从PL端控制DDR读写(三)——AXI-FULL总线调试
    zedboard如何从PL端控制DDR读写(二)——AXI总线
    zedboard如何从PL端控制DDR读写(一)
    用python3统计代码行数
    内存电路分析-设计框图和金手指
    钢铁侠也要换成女版的了???
    【转】DDR3详解(以Micron MT41J128M8 1Gb DDR3 SDRAM为例)
    verilog中符号位的扩展问题
  • 原文地址:https://www.cnblogs.com/eagleking0318/p/6520815.html
Copyright © 2020-2023  润新知