2016-08-08

什么是数据驱动?简答的理解就是测试数据决定了测试结果,这就是所谓数据驱动。数据驱动包含了数据,他就是测试数据,在自动化领域里,提倡数据分离,也就是说,测试用例和测试数据是分开(存储)的。 

在本框架设计中,采用的是Excel存储测试数据。

1 框架更改总览

源代码:autotestDataDriver.zip

在原来的框架下更改,如下图所示

Selenium Web 自动化 - 项目实战(二)

2 框架更改详解

2.1 更改用例类:LoginPage_001_LoginSuccessFunction_Test.java

下面代码中,红色字体显示出更改前后变化。更改后数据不是写在代码中,而是从excel中读取。那么怎么让读取数据,且对应用例呢?

Selenium Web 自动化 - 项目实战(二)

 

 2.2 测试数据如何保存-设计excel

Selenium Web 自动化 - 项目实战(二)

先看看如何设计excel:

excel的表名以模块名命名。excel中,有个sheet,名字为'001',对应用例编号,和设计用例的的类名第二部分是对应的,也就是说一个sheet就是一个测试用例的数据。在执行测试用例的时候,通过模块名字找到对应的excel,然后再根据对应的用例编号找到对应的sheet,最后在读取excel数据。 

2.3 通过数据提供者获取测试数据

通过数据提供者(@DataProvider)来传递给测试用例,这里将数据提供者代码放置在BaseParpare.java中,目的是为了每次运行一个用例都会读取对应的测试用例。

    /**
     * 测试数据提供者 - 方法
     * */
    @DataProvider(name = "testData")
    public Iterator<Object[]> dataFortestMethod() throws IOException {
        String moduleName = null; // 模块的名字
        String caseNum = null; // 用例编号
        String className = this.getClass().getName();
        int dotIndexNum = className.indexOf("."); // 取得第一个.的index
        int underlineIndexNum = className.indexOf("_"); // 取得第一个_的index

        if (dotIndexNum > 0) {    
            moduleName = className.substring(24, className.lastIndexOf(".")); // 取到模块的名称
        }

        if (underlineIndexNum > 0) {
            caseNum = className.substring(underlineIndexNum + 1, underlineIndexNum + 4); // 取到用例编号
        }
        //将模块名称和用例的编号传给 ExcelDataProvider ,然后进行读取excel数据
        return new ExcelDataProvider(moduleName, caseNum);
    }
View Code

相关文章:

  • 2021-12-27
  • 2021-07-01
  • 2022-01-28
  • 2021-10-13
  • 2021-10-31
  • 2022-01-14
  • 2021-12-18
猜你喜欢
  • 2021-10-17
  • 2021-11-20
  • 2021-10-29
  • 2021-10-06
相关资源
相似解决方案