![](/img/trans.png)
[英]how to prepare testng.xml for calling multiple methods(different each time)from multiple packages multiple times
[英]testng.xml is not running multiple classes from different packages
這是我的代碼段:
軟件包A中的BrowserFactory.java
public class Browserfactory {
public static void startBrowser(){
System.setProperty("webdriver.gecko.driver", strFirefoxDriverPath);
driver = new FirefoxDriver();
driver.get(someSampleURL);
}
@BeforeTest()
public void setDriver() {
Reports.configAndPrepareReport();
}
@AfterTest
public void tearDownDriver() {
driver.quit();
Reports.writeToHTML();
}
@BeforeSuite
public void startSuite() {
BrowserFactory.startBrowser();
}
@AfterSuite
public void endSuite() {
Reports.closeTheChannelToHTMLReport();
}
}
軟件包B中的VerifyCheckboxesPage.java
public class VerifyCheckboxesPage extends BrowserFactory{
CheckboxesPage objCheckboxesPage;
@BeforeClass
public void beforeClass() {
new MainPage(BrowserFactory.driver).goToCheckboxesPage();
objCheckboxesPage = new CheckboxesPage(BrowserFactory.driver);
}
@Test(priority = 1)
public void verifyCheckboxesPageHeader() {
if(objCheckboxesPage.txtHeader.getText().equals("Checkboxes")) {
Reports.logStatus(LogStatus.PASS);
}
else {
Reports.logStatus(LogStatus.FAIL);
}
}
@Test(priority = 2)
public void verifyCountOfCheckboxes() {
if(objCheckboxesPage.chkCheckboxes.size() == 2) {
Reports.logStatus(LogStatus.PASS);
}
else {
Reports.logStatus(LogStatus.FAIL);
}
}
}
軟件包C中的CheckboxesPage.java
public class CheckboxesPage{
WebDriver driver;
@FindBy(someMethodToFindObjectsOnPage)
public WebElement txtHeader;
@FindAll({@FindBy(someMethodToFindObjects)})
public List<WebElement> chkCheckboxes;
public CheckboxesPage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
}
程序包B中的VerifyABTestingPage.java
public class VerifyABTestingPage extends BrowserFactory{
ABTestingPage objABTestingPage;
@BeforeClass
public void beforeClass() {
Reports.startTest("Verify A/B Testing page");
new MainPage(BrowserFactory.driver).goToABTestingPage();
objABTestingPage = new ABTestingPage(BrowserFactory.driver);
}
@Test(priority = 1)
public void verifyABTestingPageHeader() {
if(objABTestingPage.txtHeader.getText().equals("A/B Test Control")){
Reports.logStatus(LogStatus.PASS);
}
else {
Reports.logStatus(LogStatus.FAIL);
}
}
@Test(priority = 2)
public void verifyABTestingPageBody() {
if(objABTestingPage.txtBody.getText().contains(strExpectedBody)) {
Reports.logStatus(LogStatus.PASS);
}
else {
Reports.logStatus(LogStatus.FAIL);
}
}
}
軟件包C中的ABTestingPage.java
public class ABTestingPage {
WebDriver driver;
@FindBy(someMethodToLocateObject)
public WebElement txtHeader;
@FindBy(someMethodToLocateObject)
public WebElement txtBody;
public ABTestingPage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(this.driver, this);
}
}
軟件包C中的MainPage.java
public class MainPage {
@FindBy(someMethodToLocateObject)
public WebElement lnkABTesting;
@FindBy(someMethodToLocateObject)
public WebElement lnkCheckboxes;
WebDriver driver;
public MainPage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(this.driver, this);
}
public void goToABTestingPage() {
new WebDriverWait(driver,10).until(ExpectedConditions.elementToBeClickable(lnkABTesting)).click();
}
public void goToCheckboxesPage() {
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(lnkCheckboxes)).click();
}
}
最后,這是我的testng.xml的樣子:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test thread-count="5" name="Test">
<classes>
<class name="com.herokuapp.internet.tests.VerifyCheckboxesPage"/>
<class name="com.herokuapp.internet.tests.VerifyABTestingPage"/>
</classes>
</test>
</suite>
問題陳述:當我通過右鍵單擊xml文件並單擊運行方式> TestNGSuite從testng.xml運行我的測試用例時,它僅運行VerifyCheckboxesPage(testng xml中的第一個類名),也僅運行第一個測試用例。這節課。 不知道為什么。
嘗試重新配置testNG.xml並注釋測試
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Functional Smoke Jenkins suite" parallel="false" thread-count="5" verbose="8">
<test name="test name FIRST">
<parameter name="env" value="DEFAULT"/>
<groups>
<run>
<include name="smoke"/>
</run>
</groups>
<classes>
<class name="com.herokuapp.internet.tests.VerifyCheckboxesPage"/>
</classes>
</test>
<test name="test name SECOND">
<parameter name="env" value="DEFAULT"/>
<groups>
<run>
<include name="smoke"/>
</run>
</groups>
<classes>
<class name="com.herokuapp.internet.tests.VerifyABTestingPage"/>
</classes>
</test>
並且請用適當的組名注釋測試:
@Test(priority = 1,groups = {"smoke})
public void verifyABTestingPageHeader() {
if(objABTestingPage.txtHeader.getText().equals("A/B Test Control")){
Reports.logStatus(LogStatus.PASS);
}
else {
Reports.logStatus(LogStatus.FAIL);
}
}
希望這至少在調試階段有所幫助。 讓我知道您將得到什么結果。
ps請盡量准確地與你的設置遵循一步一步從官方這里TestNG的文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.