Selenium webdriver 仅使用一个数据提供程序,如何将数据传递给多个测试方法

Selenium webdriver 仅使用一个数据提供程序,如何将数据传递给多个测试方法,selenium-webdriver,automation,testng,junit4,Selenium Webdriver,Automation,Testng,Junit4,我在TestNG中为我的Selenium脚本使用DataProvider。我的要求是只使用一个数据提供者,并将数据传递给许多测试方法 例如:假设我有10个测试方法,所以我需要创建一个数据提供者,这样它就可以将数据传递给所有这10个测试方法 有可能吗?如果是,如何实施 或者有其他选择吗 Pl帮助 如果您的每个测试方法都有@test注释,那么您可以简单地将参数添加到此注释中,如下所示:- @Test(dataProvider="Name of your DataProvider") 您可以使用所有

我在TestNG中为我的Selenium脚本使用DataProvider。我的要求是只使用一个数据提供者,并将数据传递给许多测试方法

例如:假设我有10个测试方法,所以我需要创建一个数据提供者,这样它就可以将数据传递给所有这10个测试方法

有可能吗?如果是,如何实施

或者有其他选择吗


Pl帮助

如果您的每个测试方法都有@test注释,那么您可以简单地将参数添加到此注释中,如下所示:-

@Test(dataProvider="Name of your DataProvider")
您可以使用所有10种测试方法来实现这一点&这将使它们从您的单个数据提供者获取数据

我希望它能帮助。干杯

是的,这是可能的

因此,您的数据提供者需要知道它为哪个方法或类提供数据。我做了以下实现。因此,您可以在数据提供程序中获取调用方法的上下文,并询问它必须为其提供数据的父类名称,然后根据这一点,您可以有多个文件,您可以读取和提供数据,或者在同一个csv中有不同的行,这些行通过类名进行区分,您可以从中读取所需的行

@DataProvider(name="getDataFromFile")
public static Iterator<Object[]> getDataFromFile(Method testMethod) throws Exception
{
    String expected=null;
    String className=testMethod.getDeclaringClass().getSimpleName();
    Reporter.log("Providing data for class " + className,true);
    List<Map<String, String>> setupData = getTestDataFromCsv(classname);
  //provide data here
}
@DataProvider(name=“getDataFromFile”)
公共静态迭代器getDataFromFile(方法testMethod)引发异常
{
字符串应为空;
String className=testMethod.getDeclaringClass().getSimpleName();
Reporter.log(“为类提供数据”+className,true);
List setupData=getTestDataFromCsv(类名);
//请在此提供数据
}
更新此信息: 我一直在寻找同样的解决方案。但无法拆分数据提供程序。但是,对所有方法重用数据提供程序并无害处,缺点是每个方法都必须使用完整的参数列表。所有其他选项的实施和维护都更加复杂。对于我的场景,这比为每个测试方法创建和维护单独的数据提供者要好

@before方法
公共作废设置(){
init();
登录=新登录页面(myD);
clientsearch=新的ClientSearchPage(myD);
toppanel=新的TopPanelPage(myD);
}	
@测试(dataProvider=“搜索数据”)
public void verifySearchByClientNumber(字符串clientnumber、字符串policynumber、字符串policynumberClient、字符串webreference、,
字符串webreferenceClient、字符串姓氏、字符串姓氏客户端、字符串名字、字符串名字客户端、字符串dob、字符串dobClient){
login.login();
log.info(“已成功登录,现在位于ClientSearch页面…”);
log.info(“输入客户编号”);
enterClientNumber(clientnumber);
log.info(“单击搜索按钮…”);
clientsearch.clickSearchButton();
log.info(“验证结果中存在的客户端…”);
boolean res=clientsearch.isClientPresent(clientnumber);
Assert.assertEquals(res,true,“断言失败!!”);
toppanel.单击注销按钮();
}		
@测试(dataProvider=“搜索数据”)
public void verifySearchByPolicyNumber(字符串clientnumber、字符串policynumber、字符串policynumberClient、字符串webreference、,
字符串webreferenceClient、字符串姓氏、字符串姓氏客户端、字符串名字、字符串名字客户端、字符串dob、字符串dobClient){
login.login();
log.info(“已成功登录,现在位于ClientSearch页面…”);
log.info(“输入保单编号…”);
clientsearch.enterPolicyNumber(policynumber);
log.info(“单击搜索按钮…”);
clientsearch.clickSearchButton();
log.info(“验证结果中存在的客户端…”);
boolean res=clientsearch.isClientPresent(policynumberClient);
Assert.assertEquals(res,true,“断言失败!!”);
toppanel.单击注销按钮();
}	
//这里有更多使用相同数据提供程序的方法。。。。
@后置法
公共测试(){
myD.quit();

}
但是我的10个测试需要使用10个不同的数据值通过,使用一个数据提供程序检查我的答案应该会有帮助。您的数据提供程序需要知道为哪种方法提供数据。@jeevans如果同一数据源/excel中存在10个不同的数据值,请告诉我??