【问题标题】:data provider mismatch error数据提供者不匹配错误
【发布时间】:2018-03-13 03:45:43
【问题描述】:

我正在为数据提供者使用以下代码,但它不起作用。请帮助我如何解决数据提供者不匹配问题。这里提到了有关读取 xls 、 test 、 data provider 的所有方法的完整详细信息。

@DataProvider
    public Object[][] getgbTestData(){
        Object data[][] = testutil.getTestData(sheetName);
        return data;
    }

    @Test(dataProvider="getgbTestData")
    public void addnewuser(String fname,String lname,String email,String pass,String conpass) throws IOException{

        newuser.newregistration1(fname, lname, email, pass, conpass);

        }

**method:**
public Personaldetails newregistration1(String fsname,String lsname,String email1,String pass1,String conpass1) throws IOException {

        Account.click();
        Registerlink.click();
        Firstname.sendKeys(fsname);
        Lastname.sendKeys(lsname);
        useremail.sendKeys(email1);
        password.sendKeys(pass1);
        confirmpassword.sendKeys(conpass1);
        submit.click();
        //return person;
        return new Personaldetails();

    }

//使用下面的方法从excel中读取数据

public static Object[][] getTestData(String sheetName) {
    FileInputStream file = null;
    try {
        file = new FileInputStream(TESTDATA_SHEET_PATH);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    try {
        book = WorkbookFactory.create(file);
    } catch (InvalidFormatException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    sheet = book.getSheet(sheetName);
    Object[][] data = new Object[sheet.getLastRowNum()][sheet.getRow(0).getLastCellNum()];
    // System.out.println(sheet.getLastRowNum() + "--------" +
    // sheet.getRow(0).getLastCellNum());
    for (int i = 0; i < sheet.getLastRowNum(); i++) {
        for (int k = 0; k < sheet.getRow(0).getLastCellNum(); k++) {
            data[i][k] = sheet.getRow(i + 1).getCell(k).toString();
            // System.out.println(data[i][k]);
        }
    }
    return data;
}

【问题讨论】:

  • 请发布错误以及 getTestData 返回的内容?
  • org.testng.internal.reflect.MethodMatcherException: 数据提供者不匹配方法: addnewuser([Parameter{index=0, type=java.lang.String, declaredAnnotations=[]}, Parameter{index= 1、type=java.lang.String,declaredAnnotations=[]},Parameter{index=2,type=java.lang.String,declaredAnnotations=[]},Parameter{index=3,type=java.lang.String, declareAnnotations=[]}, Parameter{index=4, type=java.lang.String, declaredAnnotations=[]}]) 参数:[(java.lang.String)fname]
  • hI@ShekharSwami ,上面我得到的错误消息。请参阅描述中的 getTestData 方法。

标签: selenium testng-dataprovider


【解决方案1】:

看起来测试需要 5 个参数,但您的数据提供程序方法 getTestData 传递的参数更少/更多。

【讨论】:

  • 不确定为什么即使我已经声明它也没有传递 5 个参数。请更正代码。
【解决方案2】:

您传递的参数数量错误。 addnewuser() 方法需要 5 个参数,但只接收一个。你可以在错误信息的最后一行看到它

参数:[(java.lang.String)fname]

如果你想传递不同数量的参数,你可以使用String[] 而不是单个参数。如果您每次都希望有 5 个参数,请检查 datagetTestData() 中的内容

【讨论】:

  • 感谢您的意见。但我是新的硒。请建议如何使用 string[] ?如果可能,请更正代码。谢谢。
  • @Krishna addnewuser(String[] data) 并通过索引data[0]data[1] 等访问它。
猜你喜欢
  • 2021-12-24
  • 2020-06-15
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
相关资源
最近更新 更多