testng数据驱动实战

在testng里可以实用多钟方式进行数据驱动测试,本文将讲解DataProvider常用的几种方式
大家也可以参考官网进行学习https://testng.org/doc/documentation-main.html

前言

  • @DataProvider(name = “data”) 数据定义的注解,其返回值为Object数组,name里的名字,表示调用时的名字
  • @Test(description = “数据驱动测试”, dataProvider = “data”) 这里的dataProvider 需要与定义数据时的名字保持一直

直接传递数据

  @DataProvider(name = "data")
    public Object[][] providerData() {
        Object[][] objects = new Object[][]{
                {"zhangsan", 10},
                {"lisi", 20},
                {"wangwu", 30}
        };

        return objects;
    }


    @Story("第一个数据案例")
    @Test(description = "数据驱动测试", dataProvider = "data")
    public void dataProvider1(String name, Integer age) {
        log.info("name = [{}] ; age = [{}]", name, age);

    }

输出结果

2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - name = [zhangsan] ; age = [10]
2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - name = [lisi] ; age = [20]
2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - name = [wangwu] ; age = [30]

根据方案名进行数据分离

 @DataProvider(name = "methodData")
    public Object[][] methodDataTest(Method method) {
        Object[][] result = null;

        if (method.getName().equals("dataProvider2")) {
            result = new Object[][]{
                    {"zhangsan", 20},
                    {"lisi", 25}
            };
        } else if (method.getName().equals("dataProvider3")) {
            result = new Object[][]{
                    {"wangwu", 50},
                    {"zhaoliu", 60}
            };
        }
        return result;
    }

   @Story("第二个数据案例")
    @Test(description = "数据驱动测试", dataProvider = "methodData")
    public void dataProvider2(String name, Integer age) {
        log.info("name = [{}] ; age = [{}]", name, age);

    }

    @Story("第三个数据案例")
    @Test(description = "数据驱动测试", dataProvider = "methodData")
    public void dataProvider3(String name, Integer age) {
        log.info("name = [{}] ; age = [{}]", name, age);

    }

输出结果

2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - dataProvider2 :name = [zhangsan] ; age = [20]
2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - dataProvider2 :name = [lisi] ; age = [25]
2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - dataProvider3: name = [wangwu] ; age = [50]
2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - dataProvider3: name = [zhaoliu] ; age = [60]

通过查询数据库进行实体类传递


    @DataProvider(name = "data2")
    public Object[] data2(Method method) {
        List<SysUserEntity> all = testService.findAll();
        return new Object[][]{{all}};
    }


    @Story("第四个数据案例")
    @Test(description = "数据驱动测试-传递实体类", dataProvider = "data2")
    public void dataProvider4(List<SysUserEntity> all) {
        for (SysUserEntity sysUserEntity : all) {
            log.info("name = [{}] ; password = [{}]", sysUserEntity.getUsername(), sysUserEntity.getPassword());
        }
    }

数据结果

2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - name = [62f1a5b8-fa8c-4724-b638-2239e1afa468] ; password = [ec3a7656-270e-47fa-85fa-771da83dd580]
2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - name = [83e109d4-b7e3-48a3-84da-c70176075d92] ; password = [3c7ae251-5ed6-424e-ac58-0f9190041c03]
2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - name = [0306ce57-f690-4beb-88a5-ee3d46c74f24] ; password = [ea81b001-4a06-4b00-962f-d0383109ecec]
2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - name = [9b522e2f-f37b-43a9-a897-363e8be2c92f] ; password = [2938c81f-63b1-454d-97e6-cac52d542298]
2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - name = [edfae7d4-bcbe-4b98-b313-1384eb9966a0] ; password = [9acf8b2a-68b6-4126-b52d-b4dc3cf9e35b]
2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - name = [773f77ff-708c-4649-9123-b4b7fc87edc9] ; password = [8ce4ac45-0537-4a06-a474-7f6e2b0693ef]
2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - name = [c3e03f23-44f3-4f18-b701-db4b96c041cc] ; password = [0300a573-9096-4c82-908c-858960700640]
2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - name = [dab0d4ec-d31e-47d4-92c5-9777422597cc] ; password = [267a3cb3-932e-4351-a05a-569225d5b667]
2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - name = [2f129cc8-96ec-44d0-8fbd-99631d0b563c] ; password = [eca04690-bb4a-4aa5-b4da-0817d147b278]
2022-11-25 [main] INFO  com.javayh.qpt.arsenal.TestParameter - name = [34016947-268c-4c28-9781-abfa9414ea40] ; password = [59bc4640-026d-4853-8502-8bf5f13f5944]

本次的分享就到这里,大家想了解更多,获取源码,可以访问https://github.com/yanghaiji/qpt

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小杨同学~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值