2017-02-09 114 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 }}; 
} 

讓我知道如果有什麼我說沒有道理:)

相關問題