簡體   English   中英

webdriver DataProvider TestNG

[英]webdriver DataProvider TestNG

我在TestNG中的代碼遇到的所有問題。 需要為方法添加參數注釋。

1)產生隨機ing

     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 }};    
}  

您的Dataprovider中有一個有趣的回報:

public static Object[][] Generation() {    
  return new Object[] { { EmailRandom }, { Password }};    
}

我假設您要此處執行的操作是:

public static Object[][] Generation() {    
  return new Object[][] { { EmailRandom }, { Password }};    
}

現在,它實際上正在返回正確的數據類型。 但是 ,這不是利用Selenium DataProviders的正確方法。 以上代碼無效

如您所知,DataProvider是二維數組。 這是您的操作方式:

Array 1: {argument 1}
Array 2: {argument 2}

這是應該如何工作的:

Array 1: {argument 1, argument 2}
Array 2: {argument 1, argument 2}

數組的第一維在每次運行方法時進行迭代。 它是二維的,因此您可以反復使用相同的方法運行一組不同的參數。 那有意義嗎?

示例:您要運行方法meet(Person, Person) 3次。 第一次運行它時,您希望Bob和John見面。 第二次,你想讓勞拉和莎拉見面。 第三次,您想讓Bob和Sarah見面。 您可以在Meet 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 }};
}

讓我知道我說的話是否沒有道理:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM