所有 我在TestNG中的代码有问题。 需要为方法注释参数。
1)生成随机叮咬
public String RandomName(){
ArrayList<String> alphaNum = new ArrayList<String>();
for (char i = 'A';i<= 'Z';i++){
String s = new String();
s +=i;
alphaNum.add(s);
}
for (char i = 'a';i<= 'z';i++){
String s = new String();
s +=i;
alphaNum.add(s);
}
String[] RandomEnteredField = new String[10];
for (int i = 0; i < RandomEnteredField.length; i++) {
RandomEnteredField[i] = alphaNum.get((int)(Math.random()*alphaNum.size()));
}
String result = "";
for(int i = 0; i < RandomEnteredField.length; i++)
{
result += RandomEnteredField[i];
}
System.out.println(result);
return result;
}
2)在测试类中,我将其保存为全局字符串
@Test(priority =0)
public void CreateAcount() throws Exception {
objFifthIssue = new TheFifthIssue(driver);
objFifthIssue.ClickOnMyAccount();
String rn = objFifthIssue.RandomName(); // add new argument to EnterRegistrationForm and also 2 below
EmailRandom = objFifthIssue.RandomName();
Password = objFifthIssue.RandomName();
objFifthIssue.EnterRegistrationForm(rn,EmailRandom,Password);
objFifthIssue.VerifyRegistrationDone();
}
3)我希望保存的EmailRandom和密码设置在另一个测试类中,如参数
@Test(priority =2, dataProvider="LogInOUt")
public void LogoutLogIN(String EmailRandom, String Password) throws Exception {
System.out.println(EmailRandom + Password);
objSixIssue = new SixIssue(driver);
objSixIssue.LogoutLogIN(EmailRandom,Password);
}
4)在DataProvider中,我尝试
@DataProvider(name = "LogInOUt")
public static Object[][] Generation() {
return new Object[] { { EmailRandom }, { Password }};
}
答案 0 :(得分:0)
您的Dataprovider中有一个有趣的回报:
public static Object[][] Generation() {
return new Object[] { { EmailRandom }, { Password }};
}
我认为你尝试在这里做的是:
public static Object[][] Generation() {
return new Object[][] { { EmailRandom }, { Password }};
}
现在它实际上正在返回正确的数据类型。 然而,这不是使用Selenium DataProviders的正确方法。 (上述代码不起作用)
如您所知,DataProviders是二维数组。这就是你的做法:
Array 1: {argument 1}
Array 2: {argument 2}
这就是它应该如何运作:
Array 1: {argument 1, argument 2}
Array 2: {argument 1, argument 2}
每次运行方法时,数组的第一个维度都会迭代。它是二维的,因此您可以反复使用相同的方法运行不同的参数集。这有意义吗?
示例:您希望运行方法meet(Person, Person)
三次。第一次运行它时,你希望Bob和John见面。第二次,你想让Laura和Sarah见面。第三次,你想让Bob和Sarah见面。您可以在meet()
方法上使用此DataProvider:
public static Object[][] provider() {
return new Object[][] {
{Bob, John},
{Laura, Sarah},
{Bob, Sarah}
};
}
得到它?
现在,如果我们查看您的代码,您似乎只是尝试使用DataProvider传递一组参数。但是,由于它必须是一个二维数组,我们可以将所有参数放在第一个数组中。像这样:
@DataProvider(name = "LogInOUt")
public static Object[][] Generation() {
return new Object[][] {{ EmailRandom, Password }};
}
如果我说的话没有意义,请告诉我。)