【问题标题】:TestNg @Dataprovider is not working in my DataDriven testing - using selenium eclipseTestNg @Dataprovider 在我的 DataDriven 测试中不起作用 - 使用 selenium eclipse
【发布时间】:2022-01-09 20:15:48
【问题描述】:

我的 Java 类没有运行。 我有一个带有 Apache POI 的 @DataProvider 来从 Excel 文件中读取数据并在网页中设置该值。但脚本以 No test found 错误结束。这是我的代码:

package testCases;

import org.openqa.selenium.By;
import org.testng.Reporter;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;


import base.TestBase;

public class StudentRegistrationForm extends TestBase {

    
    @Test(dataProvider = "getData")
    public void addStudent(String fname, String email, String CurrentAddress,String PermAddress) {
        

        System.setProperty("org.uncommons.reportng.escape-output", "false");
        //driver.get(confg.getProperty("testsiteurl"));
        driver.get(confg.getProperty("url2"));
        log.debug("Navigated to : " + confg.getProperty("url2"));
        
        driver.findElement(By.cssSelector(or.getProperty("fullname"))).sendKeys(fname);
        driver.findElement(By.cssSelector(or.getProperty("email"))).sendKeys(email);
        driver.findElement(By.cssSelector(or.getProperty("currentAddress"))).sendKeys(CurrentAddress);
        driver.findElement(By.cssSelector(or.getProperty("permAddress"))).sendKeys(PermAddress);
        driver.findElement(By.cssSelector(or.getProperty("submit"))).click();
        log.debug("Completed Test 2 - Student Registration Form");
        Reporter.log("Completed Test 2 - Student Registration Form");
    }

    @DataProvider(name="getData")
    public Object[][] getData(){
        
            String SheetName = "sheet1";
    
            int rows = excel.getRowCount(SheetName);
            int cols = excel.getColumnCount(SheetName);
    
            Object[][] data = new Object[rows - 1][cols];
    
            for (int RowNum = 2; RowNum < rows; RowNum++) {
                for (int colNum = 0; colNum < cols; colNum++) {
                    data[RowNum - 2][colNum] = excel.getCellData(SheetName, colNum, RowNum);
                }
            }
        return data;
    }
}

这是我在 Eclipse 控制台中的输出。

================================================ 默认测试 测试运行:0,失败:0,跳过:0

================================================ 默认套件 运行的测试总数:0,通过:0,失败:0,跳过:0

[TestNG] 未找到测试。什么都没有运行 用法:[选项] 要运行的 XML 套件文件 选项: -总是运行监听器 即使对于跳过的方法,也应该运行 MethodInvocation 侦听器 默认值:真 -configfailurepolicy 配置失败策略(跳过或继续) -d 输出目录 -dataproviderthreadcount 运行数据提供者时使用的线程数 -dependencyinjectorfactory TestNG 应该使用的依赖注入器工厂实现。 -排除组 要排除的组名称的逗号分隔列表 -failwheneverythingskipped 如果所有测试都被跳过并且什么都没有,TestNG 是否应该执行失败 跑。 默认值:假 -组 要运行的组名的逗号分隔列表 -junit JUnit 模式 默认值:假 -听者 .class 文件列表或实现 ITestListener 的类名列表 或 ISuiteListener -方法 逗号分隔的测试方法 默认: [] -方法选择器 .class 文件列表或实现 IMethodSelector 的类名列表 -混合 混合模式 - 自动检测当前测试的类型并运行它 合适的跑步者 默认值:假 -objectfactory .class 文件列表或实现的类名列表 ITestRunnerFactory -平行 并行模式(方法、测试或类) 可能的值:[测试、方法、类、实例、无、真、假] -港口 港口 -记者 自定义报告监听器的扩展配置 -spilistenerstoskip 逗号分隔的侦听器的完全限定类名,应该是 跳过通过服务加载程序连接。 默认: -套房名称 测试套件的默认名称,如果未在套件定义文件中指定或 源代码 -suitethreadpoolsize 用于运行套件的线程池大小 默认值:1 -testclass 测试类列表 -testjar 包含测试的 jar 文件 -testname 测试的默认名称,如果未在合适的定义文件或源中指定 代码 -testnames 要运行的测试名称列表 -testrunfactory, -testRunFactory 用于创建测试的工厂 -threadcount 并行运行测试时使用的线程数 -threadpoolfactory 类 TestNG 应该使用的线程池执行器工厂实现。 -使用默认监听器 是否使用默认监听器 默认值:真 -日志,-详细 详细程度 -xmlpathinjar jar 文件中 xml 文件的完整路径(仅在 -testjar 已指定) 默认:testng.xml

【问题讨论】:

  • 在没有数据提供者的情况下您的测试是否有效?
  • 是的,我可以在没有数据提供者的情况下运行

标签: selenium testng dataprovider testng-dataprovider testng-annotation-test


【解决方案1】:

上面代码中的 testng 使用没有任何问题。这仅仅意味着数据提供者没有提供数据。您可以在数据对象上放置一个调试点或打印它以查看数据数组是否正在初始化。也许您的 excel 实用程序没有正确编写,或者内部正在吃异常。

【讨论】:

  • 当然感谢您的评论
猜你喜欢
  • 1970-01-01
  • 2014-01-01
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 2016-12-09
相关资源
最近更新 更多