TestNG 多重测试 Class - 运行 其他 类
TestNG Multiple Test Class - Running other classes
我有一个多重测试 class,我想执行 4 个测试,但是,我想执行的 4 个测试在不同的 class 文件中是不同的 class。所以我想在我的多重测试 class 中一次调用每个 class 1。因此,代码在单个 classes 中执行,而多个测试 class 实际上只是根据优先级处理每个测试的执行。我只是不确定如何调用另一个 class 来执行。
我的多 class:
@Test(priority = 0) //Set Priority of Test - Priority of test always starts from Zero
public void one() {
System.out.println("This is Test Case 1");
}
//Test 2
@Test(priority = 1) // Test priority 1
public void Two(){
System.out.println("This is Test Case 2");
}
我需要在 @Test 块中执行我的外部 classes。自动化新手也许我的问题是我对 java?
的理解
如何传递我的参数:
public class TestNGDataProvider {
private WebDriver driver;
private static Logger logger1 = LogManager.getLogger("Logger1");
@Test(dataProvider = "Authentication")
public void testMethod1(String sUsername, String sPassword, String sMemorableWord) {
DOMConfigurator.configure("log4j.xml");
driver = new FirefoxDriver();
logger1.info("New Instance of firefox created");
//Add wait to allow web elements to load
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
logger1.info("Timeout Applied for 10 seconds to Allow Load of Elements");
//Launch FireFoxDriver - Open WebPage
driver.get("http://localhost/2010A15/");
logger1.info("Website Launched");
Reporter.log("Website Lauched Successfully | "); //Main Event Logger/Report
//Find Login Element
driver.findElement(By.id("WEB_LoginButton")).click();
logger1.info("Login Button Clicked");
//Find User name Element
driver.findElement(By.id("dijit_form_ValidationTextBox_1")).sendKeys(sUsername);
logger1.info("Username Entered");
//Find Password Element
driver.findElement(By.id("dijit_form_ValidationTextBox_2")).sendKeys(sPassword);
@DataProvider(name = "Authentication")
public static Object[][] credentials() {
return new Object[][] { { "jane20@servicecharges.co.uk", "password1", "smith" }, { "rob23@orchard.co.uk", "password1", "smith" }, { "jeff23@hotmail.com", "password1", "smith" }};
}}
据我了解,您已在单独的 class 文件中处理测试逻辑并在主 class 文件中执行这些逻辑。
因此,如果您有低于 2 class 的测试,
public class TestLogic1
{
public void testMethod1()
{
System.out.println("Test 1 executing");
}
}
public class TestLogic2
{
public void testMethod2()
{
System.out.println("Test 2 executing");
}
}
然后你可以调用,这些测试方法在你的执行中class as,
public class TestExecute
{
TestLogic1 method1=new TestLogic1();
TestLogic2 method2=new TestLogic2();
@Test(priority=1)
public void test1()
{
method1.testMethod1();
}
@Test(priority=2)
public void test2()
{
method2.testMethod2();
}
}
编辑:
假设您在一个 class 中编写了 @Test 方法和 @DataProvider,并在另一个 class 中处理它的执行顺序。使用下面的代码让它使用来自 DataProvider 的参数。
public class TestExecute{
TestNGDataProvider tg=new TestNGDataProvider();
@Test(dataProvider = "Authentication",dataProviderClass = TestNGDataProvider.class)
public void test1(String login,String user,String pass) throws InterruptedException {
tg.testMethod1(login,user,pass);
}
}
希望这就是您要找的。
另外 look here 有关 TestNG 数据提供程序的更多详细信息。
我有一个多重测试 class,我想执行 4 个测试,但是,我想执行的 4 个测试在不同的 class 文件中是不同的 class。所以我想在我的多重测试 class 中一次调用每个 class 1。因此,代码在单个 classes 中执行,而多个测试 class 实际上只是根据优先级处理每个测试的执行。我只是不确定如何调用另一个 class 来执行。
我的多 class:
@Test(priority = 0) //Set Priority of Test - Priority of test always starts from Zero
public void one() {
System.out.println("This is Test Case 1");
}
//Test 2
@Test(priority = 1) // Test priority 1
public void Two(){
System.out.println("This is Test Case 2");
}
我需要在 @Test 块中执行我的外部 classes。自动化新手也许我的问题是我对 java?
的理解如何传递我的参数:
public class TestNGDataProvider {
private WebDriver driver;
private static Logger logger1 = LogManager.getLogger("Logger1");
@Test(dataProvider = "Authentication")
public void testMethod1(String sUsername, String sPassword, String sMemorableWord) {
DOMConfigurator.configure("log4j.xml");
driver = new FirefoxDriver();
logger1.info("New Instance of firefox created");
//Add wait to allow web elements to load
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
logger1.info("Timeout Applied for 10 seconds to Allow Load of Elements");
//Launch FireFoxDriver - Open WebPage
driver.get("http://localhost/2010A15/");
logger1.info("Website Launched");
Reporter.log("Website Lauched Successfully | "); //Main Event Logger/Report
//Find Login Element
driver.findElement(By.id("WEB_LoginButton")).click();
logger1.info("Login Button Clicked");
//Find User name Element
driver.findElement(By.id("dijit_form_ValidationTextBox_1")).sendKeys(sUsername);
logger1.info("Username Entered");
//Find Password Element
driver.findElement(By.id("dijit_form_ValidationTextBox_2")).sendKeys(sPassword);
@DataProvider(name = "Authentication")
public static Object[][] credentials() {
return new Object[][] { { "jane20@servicecharges.co.uk", "password1", "smith" }, { "rob23@orchard.co.uk", "password1", "smith" }, { "jeff23@hotmail.com", "password1", "smith" }};
}}
据我了解,您已在单独的 class 文件中处理测试逻辑并在主 class 文件中执行这些逻辑。 因此,如果您有低于 2 class 的测试,
public class TestLogic1
{
public void testMethod1()
{
System.out.println("Test 1 executing");
}
}
public class TestLogic2
{
public void testMethod2()
{
System.out.println("Test 2 executing");
}
}
然后你可以调用,这些测试方法在你的执行中class as,
public class TestExecute
{
TestLogic1 method1=new TestLogic1();
TestLogic2 method2=new TestLogic2();
@Test(priority=1)
public void test1()
{
method1.testMethod1();
}
@Test(priority=2)
public void test2()
{
method2.testMethod2();
}
}
编辑: 假设您在一个 class 中编写了 @Test 方法和 @DataProvider,并在另一个 class 中处理它的执行顺序。使用下面的代码让它使用来自 DataProvider 的参数。
public class TestExecute{
TestNGDataProvider tg=new TestNGDataProvider();
@Test(dataProvider = "Authentication",dataProviderClass = TestNGDataProvider.class)
public void test1(String login,String user,String pass) throws InterruptedException {
tg.testMethod1(login,user,pass);
}
}
希望这就是您要找的。 另外 look here 有关 TestNG 数据提供程序的更多详细信息。