TestNG使用DataProvider时报Data provider mismatch错误如何解决
错误原因
- 核心问题是你定义的数据源维度和TestNG DataProvider要求的返回值结构不匹配:
TestNG的@DataProvider要求返回Object[][]类型,第一维代表要执行的测试用例条数,第二维代表单条用例对应的所有入参值。你当前定义的SiteUrlForSignin是三维数组Object[][][],每个参数值额外多套了一层数组,导致参数类型和测试方法定义的入参不匹配。 - 补充说明:测试方法里的
Method、ITestContext属于TestNG内置自动注入的参数,不需要你在DataProvider里提供对应值,不影响参数匹配规则。
修正方案
1. 调整数据源为正确的二维数组结构
// 去掉每个参数外多余的一层大括号,改为二维数组 public static Object[][] SiteUrlForSignin = { {"https://google.com","username","mypassword"} };
如果需要加多条测试用例,直接在第一维加元素即可,示例:
public static Object[][] SiteUrlForSignin = { {"https://google.com","username1","pwd1"}, {"https://baidu.com","username2","pwd2"} };
2. 调整DataProvider返回逻辑(可选简化写法)
@DataProvider(name = "SigninLink") public Object[][] getData() { // 直接返回修正后的二维数组即可 return SiteConfig.SiteUrlForSignin; }
修改后重新运行即可解决参数不匹配的报错。
内容的提问来源于stack exchange,提问作者Zakaria Shahed
相关产品推荐
相关产品推荐

