我们想针对一组数据值来运行我们的一些测试,验证相同的条件是否适用于每个.数据当前存储在平面文件或简单的Excel电子表格中. 我的第一个想法是创建一个TestNG DataProvider,它会从文件
我的第一个想法是创建一个TestNG DataProvider,它会从文件中加载数据,并用于为每个数据值调用一次测试方法.我的问题是不同的测试需要从不同的文件加载数据,似乎没有任何方式发送参数到DataProvider.有人知道这是否可行?
理想情况下,我希望我的代码看起来像以下(简化示例):
public class OddTest { @DataProvider(name = "excelLoader") public Iterator<Object[]> loadExcelData(String fileName) { ... } @Test(dataProvider = "excelLoader" dataProviderParameters = { "data.xls" }) public void checkIsOddWorks(int num) assertTrue(isOdd(num)); } }您可以使用 TestNG’s dependency injection capabilies访问DataProvider中的所有定义参数.这是需要test_param参数的一些DataProvider示例:
@DataProvider(name = "usesParameter") public Object[][] provideTestParam(ITestContext context) { String testParam = context.getCurrentXmlTest().getParameter("test_param"); return new Object[][] {{ testParam }}; }
有关ITestContext类的详细信息,请参阅TestNG JavaDoc.