2016-05-31 27 views
0

我@BeforeMethod產生的輸出。如何使用BeforeMethod輸出測試方法

@BeforeMethod 
public void Random() throws Exception { 
    //Generating Random Text 
    int leftLimit = 97; 
    int rightLimit = 122; 
    int targetStringLength = 3; 
    StringBuilder buffer = new StringBuilder(targetStringLength); 
    for (int i = 0; i < targetStringLength; i++) { 
     int randomLimitedInt = leftLimit + (int) 
      (new Random().nextFloat() * (rightLimit - leftLimit)); 
     buffer.append((char) randomLimitedInt); 
    } 
    String generatedString = buffer.toString(); 

    System.out.println(generatedString); 


} 

我如何使用@BeforeMethod的輸出在下面的方法

@Test(priority = 1) 
    public void Registration() throws Exception { 

     driver.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIATableView[1]/UIATableCell[2]/UIATextField[1]")).sendKeys("abc" + generatedString); 
} 

回答

1

你的問題的解決辦法是將存儲在類級別的變量(場)生成的字符串。例如,在課程級別上打印private String generatedString,並在之前的方法中設置generatedString

然而,因爲所有你在你的方法之前做的是生成一個隨機字符串,它會更有意義有你隨機生成方法只是一個常規的方法,可以從類中的任何地方調用。

@Test(priority = 1) 
public void registration() throws Exception { 
    String randomString = generateRandomString(); 
    driver.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIATableView[1]/UIATableCell[2]/UIATextField[1]")).sendKeys("abc" + randomString); 
} 

public String generateRandomString() throws Exception { 
    //Generating Random Text 
    int leftLimit = 97; 
    int rightLimit = 122; 
    int targetStringLength = 3; 
    StringBuilder buffer = new StringBuilder(targetStringLength); 
    for (int i = 0; i < targetStringLength; i++) { 
     int randomLimitedInt = leftLimit + (int) (new Random().nextFloat() * (rightLimit - leftLimit)); 
     buffer.append((char) randomLimitedInt); 
    } 
    String generatedString = buffer.toString(); 

    System.out.println(generatedString); 

    return generatedString; 
} 

我還應該提到有很多優秀的庫有解決方案來生成隨機字符串。 Apache的RandomStringUtils類就是一個例子。

編輯:針對的僅生成一個隨機字符串以下問題:

private final static String RANDOM_STRING = generateRandomString(); 

@Test(priority = 1) 
public void registration() throws Exception { 
    driver.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIATableView[1]/UIATableCell[2]/UIATextField[1]")).sendKeys("abc" + RANDOM_STRING); 
} 

public String generateRandomString() throws Exception { 
    //Generating Random Text 
    int leftLimit = 97; 
    int rightLimit = 122; 
    int targetStringLength = 3; 
    StringBuilder buffer = new StringBuilder(targetStringLength); 
    for (int i = 0; i < targetStringLength; i++) { 
     int randomLimitedInt = leftLimit + (int) (new Random().nextFloat() * (rightLimit - leftLimit)); 
     buffer.append((char) randomLimitedInt); 
    } 
    String generatedString = buffer.toString(); 

    System.out.println(generatedString); 

    return generatedString; 
} 
+0

當我添加一個新的測試方法是產生一個新的隨機文字...我如何使用相同的首先生成的文本。 –

+0

@ArunKumar我更新我的回答重複使用相同的生成的字符串 – user2272115

+0

@ArunKumar爲你做這個答案的工作?如果是的話請接受... – user2272115