本系列所有代码 https://github.com/zhangting85/simpleWebtest

 

本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境下testNG的Dataprovider的使用和数据驱动的自动化测试的实现,并提供全部代码。

 

 

首先,DataProvider是什么?

这是testNG提供的一个做数据驱动的自动化测试时用到的标签。详见testNG官网文档。

 

很多人会在使用testNG的时候把测试数据文件独立出来,有的人会自己去写读文件的方法,在测试方法里去调用。这样写不一定不好,但有时我们如果了解testNG提供的方法,就多了一种选择。而且通常DataProvider是比较好的一种选择。

 

DataProvider有两种写法:

 

一种是返回一个Iterator的泛型对象,代码如下:

 1 package simplewebtest.test.testcases.sample.jd;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Arrays;
 5 import java.util.Iterator;
 6 import java.util.List;
 7 
 8 import org.testng.annotations.DataProvider;
 9 import org.testng.annotations.Test;
10 
11 import simplewebtest.core.TestCase;
12 import simplewebtest.core.page.sample.jd.JDHomepage;
13 
14 public class TestJDDataDriven extends TestCase {
15 
16     
17     
18     
19     /**
20      * JD首页上搜索一个商品 主要介绍定位某个商品名称的N种写法
21      * 这里用了DataProvider
22      * (不会用DataProvier不要说自己懂testNG)
23      */
24     @Test(dataProvider="product_to_search")
25     public void searchProduct(String keyword) throws InterruptedException {
26         
27         log.info("keyword="+keyword);
28         //方法链。方法链并不会导致调试困难,因为我是先写线性脚本后重构成这种脚本this is a method chain
29         String actual_procut_name= new JDHomepage().init().searchHeader.search(keyword).getProductNameByIndexMethodTwo(1);
30         log.info("actual_procut_name="+actual_procut_name);
31         assert(actual_procut_name.contains(keyword));
32         log.info("--------------------------------");
33     }
34 
35     /**
36      * 一个返回iterator的的DataProvider
37      */
38     @DataProvider(name="product_to_search")
39     public Iterator<Object[]> createData1() {
40         //一个Array
41         String[] astringarray={"巧克力","饼","糕","蛋"};
42         //转成一个String的List
43         List<String> lines=Arrays.asList(astringarray);
44          
45         //一个Object的空的List
46         List<Object[]> data = new ArrayList<Object[]>();
47            
48         //往空List里放东西,然后返回
49         for (String line :lines )
50             {
51                 data.add(new Object[]{line});
52             }
53             return data.iterator();
54 
55         }
56     
57 }
View Code

相关文章:

  • 2021-09-15
  • 2022-12-23
  • 2022-12-23
  • 2021-10-05
  • 2022-12-23
  • 2022-01-12
  • 2021-12-24
  • 2022-03-09
猜你喜欢
  • 2021-05-27
  • 2021-09-09
  • 2021-09-13
  • 2021-09-22
  • 2021-07-15
  • 2022-12-23
相关资源
相似解决方案