当前位置: 首页 > 知识库问答 >
问题:

在我的DataDriven测试中,TestNg@数据提供者不起作用-使用硒蚀

瞿兴朝
2023-03-14

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

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控制台中的输出。

[TestNG]未找到测试。未运行任何内容用法:[选项]要运行的XML套件文件选项:-alwaysrunlisteners即使跳过的方法也应该运行方法调用监听器默认值:true-confifailurePolicy配置失败策略(跳过或继续)-d输出目录-dataProviderthreadcount运行数据提供程序时要使用的线程数-依赖注入器工厂TestNG应该使用的依赖注入器工厂实现。-排除组以逗号分隔的组名列表以排除-失败时一切跳过如果跳过所有测试并且没有运行任何内容,TestNG应该失败执行。默认值:false-group逗号分隔的要运行的组名列表-jUnit JUnit模式默认值:false-listener. class文件列表或实现ITestListener或ISuiteListener的类名列表-方法逗号分隔的测试方法默认值:[]-方法选择器. class文件列表或实现IMethod odSelector的类名列表-混合混合模式-自动检测当前测试的类型并使用适当的运行程序运行它默认值:false-对象工厂. class文件列表或实现ITestRunnerFactory的类名列表-并行并行模式(方法、测试或类)可能的值:[test、方法、类、实例、无、真、假]-port端口-报告器自定义报告监听器的扩展配置-spilistenerstoskip逗号分隔的完全限定类应跳过通过服务加载器连接的侦听器名称。默认值:-suitename测试套件的默认名称,如果在套件定义文件或源代码中未指定-suitethreadpoolsize用于运行套件的线程池大小默认值:1-testclass测试类列表-testjar包含test-testname的jar文件默认测试名称,如果在suite定义文件或源代码中未指定-testname要运行的测试名称列表-testrunFactory,-testRunFactory用于创建测试的工厂-threadcount并行运行测试时使用的线程数-threadpoolfactoryclass TestNG应使用的线程池执行器工厂实现。-usedefaultlisteners是否使用默认侦听器默认值:true-log,-详细程度-xmlpath injar内部xml文件的完整路径jar文件(仅在指定-testjar时有效)默认:testng.xml

共有1个答案

苏富
2023-03-14

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

 类似资料:
  • 我正在尝试并行运行我的测试,如果我的数据提供程序存在于我的@Test所在的同一类中,则一切正常。 然而,如果我将DataProvider放在一个单独的类中,并行运行有时运行良好,有时会失败。 以下是我的常用数据提供者代码 下面是我的一个“测试”

  • 我是TestNG框架的新手。请指导如何使用Apache POI(Excel)参数化测试用例。

  • 在使用Apache POI框架读取excel时,我试图从testng中的dataprovider方法返回一个地图。 我写的代码是这样的 我收到以下错误

  • 问题内容: 我正在用硒编写以下代码,并且显示以下错误,请让我知道问题出在哪里。 导入org.testng.annotations.DataProvider; 导入org.testng.annotations.Test; 错误: 失败:testData org.testng.internal.reflect.MethodMatcherException:数据提供者不匹配方法:testData([Pa

  • 我有一个测试班和测试方法。这取决于数据提供程序方法。数据提供程序方法位于不同的类中,而不是测试类或其基类之一。根据TestNG文件 如果要将数据提供程序放在不同的类中,则它需要是静态方法或具有非参数构造函数的类,并且指定可以在dataProviderClass属性中找到它的类 测试类: 数据提供程序类: Eclipse的测试输出: 它似乎不起作用。我正在使用TestNG 6.9.11并尝试从mav

  • 我想在TestNg中并行运行硒测试,使用“数据提供者”。理想情况下,测试是按方法并行的(一个测试=一个方法),而不是简单的浏览器套件并行。我在某个地方读到过,一次可以控制大约5个ChromeDriver实例,所以我认为这应该是可能的。稍后,我计划转移到grid2。对于开发,我将通过右键单击XML配置文件上的运行来运行IntelliJ idea测试运行程序。 我在并行运行测试时遇到了问题(在grid