首页 > 其他 > 详细

8-12接口测试进阶-1数据驱动

时间:2019-10-15 14:32:07      阅读:92      评论:0      收藏:0      [点我收藏+]

课程目录:

  • 数据驱动
  • 接口源码分析
  • 从源码中解析接口信息
  • Dubbo接口测试
  • 接口持续集成

数据驱动测试(Data-Driver Testing)

相同的测试脚本使用不同的测试数据执行,并完全分离了测试数据和测试行为,这样的设计模式叫做数据驱动。
TestNG实现测试驱动的两个关键注解:

  • @DataProvider
  • @Parameters

DataProvider基础

使用DataProvider

将数据写在另一个类里

package com.csj2018.testdata;

import org.testng.annotations.DataProvider;

public class TestData {
    @DataProvider(name="car")
    public static Object[][] createData(){
        return new Object[][]{
                {"明朝","王阳明"}
        };
    }
}

测试脚本

package com.csj2018;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DataProviderDemo {
    /*
     * 类中提供测试数据
     */
    @DataProvider(name="car")
    public Object[][] createData(){
        return new Object[][]{
                {"大众","帕萨特"},
        };
    }
    @Test(dataProvider = "car")
    public void testData1(String brand,String middleClassAuto){
        System.out.println("@dataProvider 从本类中读取测试数据");
        System.out.println("品牌:"+brand+"\t中级车:"+middleClassAuto);
    }
    @Test(dataProvider = "car",dataProviderClass = com.csj2018.testdata.TestData.class)
    public void testData2(String dynasty,String famous){
        System.out.println("@dataProvider 从数据类中读取测试数据");
        System.out.println("朝代:"+dynasty+"\t人物:"+famous);
    }
}

method定制

package com.csj2018.testdata;

import org.testng.annotations.DataProvider;

import java.lang.reflect.Method;

public class TestData {
    @DataProvider(name="car")
    public Object[][] createData(Method m){
        if(m.getName().equals("testData2")){
            return new Object[][]{
                    {"西汉","霍去病"}
            };
        }
        return new Object[][]{
                {"明朝","王阳明"}
        };
    }
}
package com.csj2018;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class Demo1 {
    @Test(dataProvider = "car",dataProviderClass = com.csj2018.testdata.TestData.class)
    public void testData1(String dynasty,String famous){
        System.out.println("@dataProvider 从数据类中读取测试数据");
        System.out.println("朝代:"+dynasty+"\t人物:"+famous);
    }
    @Test(dataProvider = "car",dataProviderClass = com.csj2018.testdata.TestData.class)
    public void testData2(String dynasty,String famous){
        System.out.println("@dataProvider 从数据类中读取测试数据");
        System.out.println("朝代:"+dynasty+"\t人物:"+famous);
    }
}

使用Parameters

创建测试用例

package com.csj2018;

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;


public class TestParameters {
    @Test
    @Parameters({"province","city"})
    public void testParameters(String province, String city){
        System.out.println("@Parameters");
        System.out.println("省份:"+province+"\t城市:"+city);
    }
}

新建xml文件,用于传递参数,并执行用例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite" verbose="1">
    <test verbose="2" preserve-order="true" name="lesson1"><!--测试名称-->
        <classes>
            <class name="com.csj2018.TestParameters"><!--测试类的路径-->
                <parameter name="province" value="浙江" />
                <parameter name="city" value="杭州" />
                <methods>
                    <include name="testParameters"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>

DataProvider进阶

8-12接口测试进阶-1数据驱动

原文:https://www.cnblogs.com/csj2018/p/11677023.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!