TestNG,我可以让@beforegroups组工作的唯一方法是将@Test(groups= "xxx"添加到我的顶级方法中,这是正确的吗?



似乎只有当我还将顶级方法分配给一个组时,我的测试才会运行。这是正确的做事方式吗?在示例中,顶级方法似乎不需要添加组。非常感谢您的帮助。

package Practice;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeGroups;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
//This has to be added to allow the groups to be selected in xml and to allow @beforegroups to run
@Test(groups="Home") 
public class PracticeTest {
private WebDriver driver;
String baseurl = "http://automationpractice.com/index.php";
String womenurl = "http://automationpractice.com/index.php?id_category=3&controller=category";
String contacturl = "http://automationpractice.com/index.php?controller=contact";
@BeforeTest
public void beforeTest() {      
//set up driver
System.setProperty("webdriver.chrome.driver","C:\Users\Lenovo\Documents\chromeDriver91\chromedriver.exe");
driver = new ChromeDriver();
System.out.println("before test");
}       

@AfterTest
public void afterTest() {   
//close window
driver.quit();
System.out.println("after test");
}   

@BeforeGroups(groups = "Home")
public void beforeHome() {
driver.get(baseurl);
System.out.println("Before groups");
}

@Test(groups = {"Home"})
public void Home() {
//driver.get(baseurl);
//driver.get(baseurl);
String title = driver.getTitle();                
Assert.assertTrue(title.contains("My Store")); 
System.out.println("Home");
}

@Test(groups = {"Womens"})
public void Womens() {
//driver.get(baseurl);
driver.get(baseurl);
String title = driver.getTitle();                
Assert.assertTrue(title.contains("My Store")); 
System.out.println("womens");
}
}

在我的TestNG.xml中,我只选择包括家庭和妇女团体。这两者都运行它们的语句并将其打印到控制台。

<suite name="Suite">
<test name="Test">
<groups>  
<run>   
<include name="Home"/>  
<include name="Womens"/>
</run>  
</groups>

<classes>
<class name="Practice.PracticeTest"/>
</classes>

</test> <!-- Test -->
</suite> <!-- Suite -->

解决了我自己。如果我从顶级类(practiceTest(中删除home标记并将(alwaysRun=true(添加到我的@beforeTest和@afterTest中,这将以我想要的方式工作。

最新更新