我正在建立一个新框架,并希望将范围报告作为IInvokedMethod侦听器的一部分来实现,以便在每个方法之前,我都可以启动scopeTest并记录步骤。
当前,我正在测试类中的每个方法中启动 extentTest(在BaseTest类中声明的ExtentTest的引用)。 但是我不想一次又一次地写相同的代码。 下面是我的代码。 有什么方法可以在testng侦听器中初始化extentTest,并在下面的测试类中使用它?
当前代码(测试类别):
public class ApplyNowPageTests extends BaseTest {
@Test(groups = {"Apply Now"}, enabled = false, dataProvider = "validStates", dataProviderClass = GeneralDataProvider.class)
public void verifyApplyNowRangeValues(String state) throws Exception {
testCaseName = className + " : " +state;
extentTest = extentReport.startTest(
className + " : " + new Throwable().getStackTrace()[0].getMethodName()+" - " +state);
extentTest.log(LogStatus.INFO, "Starting the test");
extentTest.assignAuthor("Ankur Magan");
ApplyNow applyNow = new ApplyNow(driver, extentTest);
PageFactory.initElements(new AppiumFieldDecorator(driver), applyNow);
applyNow.gotoApplyNowFlow();
applyNow.enterEmail(dataClient.getEmail());
applyNow.enterState(state);
applyNow.verifyRangeSliderDisplayed();
Map<String, String> loanActualValues =applyNow.getRangeSliderAmount();
Assert.assertEquals(States.getStateMinAmount(state), loanActualValues.get("min"));
Assert.assertEquals(States.getStateMaxAmount(state), loanActualValues.get("max"));
applyNow.reportPass(state + " : Passed ");
}
/* Verify Apply Now - Login Functionality*/
@Test(groups = {"Apply Now"}, enabled = true)
public void verifyApplyNowLogin() throws Throwable {
testCaseName = className + " : " +new Throwable().getStackTrace()[0].getMethodName();
extentTest = extentReport.startTest(
className + " : " + new Throwable().getStackTrace()[0].getMethodName());
extentTest.log(LogStatus.INFO, "Starting the test");
extentTest.assignAuthor("Ankur Magan");
ApplyNow applyNow = new ApplyNow(driver, extentTest);
PageFactory.initElements(new AppiumFieldDecorator(driver), applyNow);
CreateYourAccount createAccnt=applyNow.completeApplyNowPage(dataClient);
createAccnt.completeCreateYourAccountPage(dataClient);
}
}
答案 0 :(得分:1)
但是我不想一次又一次地写相同的代码。下面是我的 码。有什么办法可以在testng中初始化extentTest? 侦听器,并在下面的测试类中使用它们?
@BeforeEach
public void init(){
//This method will be executed before every @Test
}
答案 1 :(得分:0)
public class MyTest{
@BeforeMethod
public void init(){
//your logic
testCaseName = className + " : " +state;
extentTest = extentReport.startTest(
className + " : " + new Throwable().getStackTrace()[0].getMethodName()+" - " +state);
extentTest.log(LogStatus.INFO, "Starting the test");
extentTest.assignAuthor("Ankur Magan");
//.............
}
@Test
public void test1(){
//test some
}
@Test
public void test2(){
//
}
}
使用init()
注释对@BeforeMethod
进行注释。参见http://testng.org/doc/documentation-main.html#annotations