[英]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.