Hello everyone, i have a trouble using Data Provider with @Parameter
Context- I'm using appium2, testng 7.5 with java
- My code (Login test case) already passed and it run in parallel device
- The user credentials are from @DataProvider (the passed test one is using the same credential)
What i want:- Use the different credential for each device
for example:
if(testDataId.equals(testDataIdFromDataProvider)){
phoneNumber = phoneNumberFromDataProvider;
password = passwordFromDataProvider
}
I’ve tried to combine the @Parameter and Data Provider like:
The Test file:
@Test(priority = 1, dataProvider = "loginCredentials", dataProviderClass = LoginDataProvider.class)
@Parameters("testDataId")
public void handleSuccessLogin(String testDataIdMark, String phoneNumber, String password, String testDataId){
System.out.println("testDataIdMark "+testDataIdMark);
System.out.println("phoneNumber "+ phoneNumber);
System.out.println("password "+ password);
System.out.println("testDataId "+ testDataId);
}The DataProvider file:public class LoginDataProvider {
@DataProvider(name = "loginCredentials")
public Object[][] getTestData() {
return new Object[][]{
{"1", "123456", "111111"},
{"2", "654321", "222222"}
};
}
}
The XML file:
<test name="Login">
<parameter name="appiumPort" value="4723"/>
<parameter name="platformName" value="android"/>
<parameter name="platformVersion" value="5"/>
<parameter name="udid" value="xxxxxx"/>
<parameter name="appPackage" value="mtda.xxx"/>
<parameter name="appActivity" value="com.xxx"/>
<parameter name="testDataId" value="1"/>
<classes>
<class name="testcases.LoginTestCase">
</class>
</classes>
</test>
<test name="Login2">
<parameter name="appiumPort" value="4725"/>
<parameter name="platformName" value="android"/>
<parameter name="platformVersion" value="7"/>
<parameter name="udid" value="xxxxxx"/>
<parameter name="appPackage" value="mtda.xxx"/>
<parameter name="appActivity" value="com.xxx"/>
<parameter name="testDataId" value="2"/>
<classes>
<class name="testcases.LoginTestCase">
</class>
</classes>
</test>But it return error:has no parameters defined but was found to be using a data provider (either explicitly specified or inherited from class level annotation).
Data provider mismatch
Thanks for your time to read and response my mail.