基于testNG的通用数据驱动-DataProvider

2023-11-01

    上一篇有提过可以通过DataProvider做数据驱动,通过@Test(dataProvider = "abc"),@DataProvider(name = "abc")来获取指定的测试数据,在缺点是测试数据需要保存在代码中,如果想从外部获取参数,需要一个通用的数据驱动。

     DataProvider 提供了一个方法,DataProvider(Method m),通过入参传入的方法,可以知晓该方法要调用哪个数据,从外部获取到数据后,转为二维数组返回即可。直接上代码~~

    首先我们创建一个通用数据驱动类ExtentTestNGDataProvider,当脚本调用@DataProvider(name = "createData")时,将该方法名传入,获取方法名称,在数据库查到该方法对应的数据,最终返回Object [ ][ ] 格式的结果。

public class ExtentTestNGDataProvider {

    @DataProvider(name = "createData")
    public static Object[][] createData(Method m) throws Exception {
        String casename = m.getName();
        String sql = "select data_json from tb_data where status = 1 and casename = '"+casename+"'";
        List<Map<String, Object>> list = MysqlUtils.exeSqlApi("auto_test", sql);
        Parameter[]  parameter= m.getParameters();
        List<Map<String,Object>> listnew = new ArrayList<>();
        for(Map<String,Object> map :list){
           String data_json =  map.get("data_json").toString();
            LinkedHashMap<String, Object> mapdata = JSON.parseObject(data_json, LinkedHashMap.class);
            listnew.add(mapdata);
        }
        Object [ ][ ] result=new Object[listnew.size()][parameter.length];
        for(int i=0;i<listnew.size();i++)
        {
            result[i]=listnew.get(i).values().toArray();
        }
        return result;
    }



}

  数据库:通过status控制测试数据是否生效,通过data_json返回测试数据。data_json内容和代码中原来的测试数据一致。

   

 

 最后测试用例类

@Test(dataProvider = "createData", priority = 2,threadPoolSize = 1, invocationCount = 1)// dataProviderClass = ExtentTestNGDataProvider.class,,threadPoolSize = 1, invocationCount = 1
public void payment_order(String name, String dealer_id, String replacejson, String assertjson) throws Exception {

 
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于testNG的通用数据驱动-DataProvider 的相关文章

  • 查找 maven 用于运行 testng 测试用例的类路径

    我可以使用 maven 的哪些选项来确定 maven 正在使用哪个类路径运行 testng 测试用例 您没有提供 Maven 版本 但至少在 3 x 也可能是 2 x 中您可以使用 X 调试 选项运行命令 这样 测试类路径就会在测试运行之前
  • 一文让你了解UI自动化测试

    测试都起什么作用 是项目的保险 但不是项目的救命草 测试无实际产出 但作用远大于实际产出 测试是从项目维度保证质量 而不是测试阶段 UI自动化 下面简称自动化 基于UI进行自动功能测试 以Web端作为例子 一般的UI功能自动化都是基于HTM
  • Web自动化测试 —— capability参数配置

    一 capability概述 capability是webdriver支持的标准命令之外的扩展命令 配置信息 配置web驱动属性 如浏览器名称 浏览器平台 结合selenium gird完成分布式 兼容性测试 官网地址 https www
  • 外包干了3个月,技术退步明显。。。。。

    先说一下自己的情况 本科生 20年通过校招进入广州某软件公司 干了接近3年的 功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了3年的功能测试 已经让我变得不思进取 谈了2年的女朋
  • Jenkins 和 TestNG 结果编码

    我使用 Jenkins 构建我的 Maven 项目并使用插件发布 testng 结果 报告中的西里尔字母符号有问题 它看起来像 但 Jenkins 控制台中的西里尔文输出正常 我的 pom xml
  • AssertionError IDEA 输出中的字符编码

    我正在使用 IntelliJ IDEA 12 0 4 进行一些测试 当我使用 JUnit4 框架运行一个时 我的断言错误如下所示 java lang AssertionError Status should be expected true
  • 如何使用 Eclipse 运行 testng 工厂?

    我正在使用 eclipse 2018 09 4 9 0 和 testng 插件 版本 6 14 0 201802161500 我创建了一个 Maven 项目来从教程中学习 testng 我想在 Eclipse 中运行 testng 工厂方法
  • TestNG - 如果满足条件,如何从 BeforeSuite 注释中强制结束整个测试套件

    如果满足 BeforeSuite 注释中的条件 是否有办法退出整个测试套件 也许有一种方法可以调用 AfterSuite 并绕过整个测试 我在 BeforeSuite 中进行数据库调用 如果查询返回任何结果 我会发送一封电子邮件 现在想要终
  • 使用 testNG 并行化测试时,类中的测试不会在同一线程中执行

    测试ng xml
  • TestNG 跳过测试 - 为什么?

    我正在使用 testng 和 selenium 测试一个网络应用程序 测试主要包括打开应用程序的几个页面 并针对每个页面执行一些特定的活动 因此 我有一个执行 打开页面 测试的抽象基类 并定义了一个用作该测试的数据提供程序的抽象方法 然后有
  • 如何自定义 json 格式的 TestNG 报告结果

    我正在使用 TestNG 和 selenium webdriver java 我想制作一个json格式的输出报告 testng可以制作一个json格式的报告吗 请给我一个关于这个问题的例子 您可以编写自己的报告程序 以您需要的任何格式生成测
  • Maven 在运行 testng 测试用例时抛出错误

    我有 steup Eclipse Maven TestNG 我打算运行 Selenium 测试用例 这是我的 POM 文件
  • 如何使用 Excel 文件中的不同测试数据集在 testng 中运行多个测试用例?

    我有以下 testng xml 我的项目包含多个类 每个类都有一个 Test testNG 方法及其相关的数据提供程序 意味着类 I1 DoLoginTest 包含一种方法及其数据提供程序 类 I2 CreateScenarioTest 包
  • 从 Maven 设置 TestNG 的详细级别

    当我运行测试时 我讨厌盯着闪烁的光标而不知道正在运行什么 为了解决这个问题 我在所有测试中添加了完成消息 然而我意识到这是一个非常老套的解决方案并且增加了一些废话 假设TestNG的详细级别打印测试描述 我如何在Maven中设置详细级别 请
  • 如何以编程方式使用 TestNG 运行 Selenium Java 测试?

    我使用 Selenium RC 和 Java 使用 TestNG 作为测试框架 我使用 Eclipse 作为 IDE 我想非常轻松地从我自己的程序中调用 TestNG 我怎样才能做到这一点 我的以下 Java 代码运行良好 Test pub
  • 存根方法时出现 InvalidUseOfMatchersException

    我有这个 TestNG 测试方法代码 InjectMocks private FilmeService filmeService new FilmeServiceImpl Mock private FilmeDAO filmeDao Bef
  • 如何使用 TestNG 按名称和通配符运行类?

    我有很多带有 TestNG 测试的类 并且我有一个方便的命名约定 我想制作只运行以 Xyz 开头的所有类的测试套件 有什么办法可以做到这一点吗 我希望它的工作方式是使用像这样的通配符
  • 找不到实体框架数据提供程序,entityclient

    首先 我发现许多问题和许多答案与我的问题相关或被认为与我的问题相同 但似乎没有什么对我有用 我有一个全新的模板化 MVC4 网站 全新安装的 sql server 2008 r2 中有一个全新的数据库 我在数据库上运行 aspnet reg
  • 同时使用@DataProvider和@Parameters

    我想知道是否有办法同时使用两者 DataProvider and Paramaters来传递参数 我尝试了两种选择 但都失败了 Parameters Brand Test dataProvider dpCGA groups CGA publ
  • 使用 testng 和 maven 运行不同的测试套件

    我使用 TestNg 和 Maven 以及 Surefire 插件来运行我的测试 我有几个不同的组件 我希望能够使用相同的 pom xml 在不同时间运行它们 目前 为了做到这一点 我有几个不同的 XML 文件定义了一个测试套件 并且我设置

随机推荐