2017-02-09 113 views
0

全部 我的代码在TestNG中遇到问题。 需要为该方法注释参数。webdriver DataProvider 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

您的数据提供程序一个有趣的收益有:

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)三次。你第一次运行它,你想让鲍勃和约翰见面。第二次,你想让劳拉和莎拉见面。第三次,你想要鲍勃和莎拉见面。您可以在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 }}; 
} 

让我知道如果有什么我说没有道理:)