0
所以,我試圖讓我的測試套件爲多個憑證運行每個測試用例。TestNG @Factory @Dataprovider
因此,我定義了一個數據提供者,它將爲@Factory提供憑據,以針對每個憑證多次運行測試。
我的代碼如下:
package TestSuite.TP_LogOut;
import org.testng.Reporter;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Factory;
import org.testng.annotations.AfterTest;
import org.testng.annotations.Test;
import Repository.URLs;
import SeLib.CompareURL;
import SeLib.LogIn;
import SeLib.WaitAndClick;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class TC_LogOut{
@BeforeTest
public void beforeTest() throws InterruptedException{
Reporter.log("The test has just begun.");
}
private WebDriver driver;
private String username;
private String password;
@Factory (dataProvider="credentials")
public setter(String username, String password){
this.username=username;
this.password = password;
System.out.println("Credentials "+username+" "+password);
}
@DataProvider
public static Object[][] credentials() {
return new Object[][] { { "id1", "pass1" },
{ "id2", "pass2" } };
}
@Test
public void TC_LogIn() throws Exception{
// use username, password here:
LogIn.Execute(driver, username, password);
}
}
出於某種原因,@Factory不承認非復原型像,我看到幾個例子,並指出我出來,它應該是一個void類型功能。
是否有任何明顯的解決方案不暗示@Factory創建多個測試用例實例?
如果沒有,返回類型應該如何?
謝謝...
編輯:由於我打電話測試用例裏面的登錄功能,通過將駕駛員的LogIn.Execute方法,我認爲這將是一個偉大的想法只是LogIn來處理運行多個測試用例,然後它會簡化它,而不必在每個測試用例中維護@Factory和@DataProvider。但是這會像一個不正確的編程設置,不是嗎?
@Factory通常適用於類構造函數。但你用方法標記。因此它期望返回類型。如果使用類名稱TC_LogOut更改方法名稱設置器,它可能會起作用。但您需要解決驅動程序對象。我們可以將Factory標記爲方法,但是您需要將返回類型設置爲對象arrary,如object []。 – Murthi