用途:面向使用 TestNG 编写数据驱动测试的场景,将测试逻辑与测试数据分离,使单个测试方法可对多组输入运行。
主要能力:
- DataProvider:定义 @DataProvider 返回 Object[][],测试方法通过 @Test(dataProvider = "name") 引用;支持单值、多参数、方法上下文(ITestContext、Method)、parallel = true 并行、返回 Iterator 按需生成数据(适合大数据集)。
- 外部 DataProvider:可将 DataProvider 放入独立类,测试方用 dataProviderClass 指定;跨类共享时方法需为 static。
- Factory 模式:@Factory 创建多个测试类实例,也可 @Factory(dataProvider = "...") 按数据构造实例,实现同一测试在不同浏览器或角色下重复执行。
- 外部数据源:示例展示从 CSV、JSON(Jackson)、Excel(Apache POI)读取并转换为 Object[][]。
- 参数化:@Parameters 与 @Optional 读取 XML 参数,可与 DataProvider 组合,也能根据环境参数动态返回不同数据集。
- 命名用例行:数据数组首列放用例 ID,便于报告追踪。
使用方式:在测试类中声明 @DataProvider 方法并返回 Object[][];测试方法标注 @Test(dataProvider = "..."),参数类型须与数据列一致;外部提供者加 dataProviderClass,且方法为 static。
适用场景:登录凭据验证、多环境 API 访问、多浏览器/角色权限测试、需要大批量或外部文件维护数据的自动化测试。
限制与常见问题:返回类型必须是 Object[][];类型不匹配会失败;外部 DataProvider 忘加 static 会报错;需显式处理 null;文件流要关闭避免资源泄漏;避免硬编码环境数据;数据与用例强耦合不利于维护。
资料未提供该技能的具体安装命令、平台支持范围、版本要求与收费信息。