所有我在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类中,我将其保存为全局字符串
@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 }};
} 发布于 2017-02-11 06:15:26
您的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见面。第二次,你想让劳拉和莎拉见面。第三次,你想让鲍勃和莎拉见面。您将在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 }};
}如果我说的任何话没有意义,请告诉我:)
https://stackoverflow.com/questions/42138703
复制相似问题