zoukankan      html  css  js  c++  java
  • 学习使用TestNG进行数据驱动测试

    一、数据驱动测试的应用场景
        在实际的测试工作中,我们经常会遇到如此场景:同样的测试操作步骤,由于多组不同的输入数据,需要执行多次测试操作。在自动化测试用例中,针对这种情况,我们可以使用TestNG中的DataProvider注解来轻松实现这种操作。
     
    二、TestNG中DataProvider的基础使用方法
        可以用一个有着@DataProvider注解的方法作为提供测试数据的容器。同时在对应的测试执行方法的@Test注解中,注明测试数据的来源,可以见代码示例:
     
     1 public class TestDataDriven {
     2  
     3  
     4     @DataProvider(name="testData")  //在DataProvider注解中为dataprovider命名
     5     public Object[][] dataProvider(){
     6         return new Object[][]{{1,2},{2,3},{3,4}};
     7     }
     8  
     9     @Test(dataProvider="testData")//在Test注解中指定dataProvider获取数据的来源
    10     public void testDataDriven(int a, int b){
    11         System.out.println("this is : "+(a+b));
    12     }
    13  
    14 }
    15  
    16 public class TestDataDriven {
    17  
    18  
    19     @DataProvider
    20     public Object[][] dataProvider(){
    21         return new Object[][]{{1,2},{2,3},{3,4}};
    22     }
    23  
    24     @Test(dataProvider="dataProvider")
    25     public void testDataDriven(int a, int b){
    26         System.out.println("this is : "+(a+b));
    27     }
    28  
    29 }
     
    把测试执行方法与数据提供方法进行对应的方式有两种: 
    1、在数据提供方法的@DataProvider注解中指定name,如 @DataProvider(name="testData"),然后在对应的测试执行方法的@Test注解中填写dataProvider的来源时,指定@DataProvider注解中的name,如 @Test(dataProvider="testData")
    2、不在数据提供方法的@DataProvider注解中指定name,在对应的测试执行方法的@Test注解中填写dataProvider的来源时,直接填写数据提供的方法名称。
     
     
    三、将数据提供方法在一个单独的类中进行存放  
      在实际的工作中,我们发现将数据提供方法和测试执行方法放在同一个类中,对代码的可读性、维护性都会带来负面的影响。因此可以专门建立一个类来作为存放数据提供方法的容器。同时在对应的测试执行方法的@Test注解中填写dataProvider的来源时,加上对数据提供类名的描述。代码如下:
    
    
     1 import org.testng.annotations.DataProvider;
     2  
     3 public class TestDataProvider {
     4  
     5     @DataProvider
     6     public static Object[][] DataMethodNoName(){
     7         return new Object[][]{
     8                 {"data with no name 1"},
     9                 {"data with no name 2"},
    10                 {"data with no name 3"}
    11         };
    12     }
    13  
    14  
    15     @DataProvider(name = "datamethodwithname")
    16     public static Object[][] DataMethodWithName(){
    17         return new Object[][]{
    18                 {"data with  name 1"},
    19                 {"data with  name 2"},
    20                 {"data with  name 3"}
    21         };
    22     }
    23  
    24 }
     
    同时在对应的测试执行方法的@Test注解中填写dataProvider的来源时,加上对数据提供类名的描述,
    dataProviderClass=com.testnglearn.TestDataProvider.class
    。代码如下:
    1 @Test(dataProvider="datamethodwithname",dataProviderClass=com.testnglearn.TestDataProvider.class)
    2 
    3     public void testDataDriven_1(String a){
    4         System.out.println("this is : "+a);
    5     }
  • 相关阅读:
    Java核心技术 卷一 笔记四 库类的直接使用
    Java核心技术 卷一 笔记三 大数值及数组
    Java核心技术 卷一 笔记2 字符串的复制
    Java核心技术 卷一 笔记1
    修改css 样式后, hover事件 不生效
    修改 element ui input 输入框 样式不生效问题
    css3 计算属性
    Vue3 改动系列
    浏览器实现,向下滑动 鼠标滚轮,页面横向移动
    linux ceont0s7 vue 打包压缩图片 一直报错
  • 原文地址:https://www.cnblogs.com/zhaochifan/p/5194897.html
Copyright © 2011-2022 走看看