开发者社区 问答 正文

如何配置ExtendReport用于报告和TestNG侦听器以用于Hybride Framework

公共类Baseclass_libraries {

公共静态WebDriver驱动程序;公共静态fileutil flib = new fileutil(); 公共静态ExtentReports范围;公共静态ExtentTest scopeTest;

@BeforeSuite公共无效configBS()引发IOException {范围=新的ExtentReports(System.getProperty(“ user.dir”)+“ / test-output / ExtentReport.html”,true); scope.addSystemInfo(“主机名”,“本地主机”); scope.addSystemInfo(“用户名”,“自动化”); scope.addSystemInfo(“ Environment”,“ QA”); }

@BeforeClass公共无效configBc()引发IOException {System.out.println(“ ========午餐浏览器========); 属性pobj = flib.getpropertiesfileobject(); 字符串browsername = pobj.getProperty(“ BROWSER”); if(browsername.equals(“ chrome”)){System.setProperty(“ webdriver.chrome.driver”,“ ./Resourse/chromedriver.exe”); driver = new ChromeDriver(); } else if(browsername.equals(“ firefox”)){driver = new FirefoxDriver(); } else if(browsername.equals(“ IE”)){System.setProperty(“ webdriver.IE.driver”,“”); driver = new InternetExplorerDriver(); } driver.manage()。window()。maximize(); driver.manage()。timeouts()。implicitlyWait(20,TimeUnit.SECONDS);

Properties pobj=flib.getpropertiesfileobject();
String CMS_URL=pobj.getProperty("URL");
if(CMS_URL.equals("https")) {
    driver.get(pobj.getProperty("URL"));
}
else if(CMS_URL.equals("https: ")) {
    driver.get(pobj.getProperty("URL"));
}
 LoginPage log=PageFactory.initElements(driver, LoginPage.class);
           log.EnterUsername(pobj.getProperty("USERNAME").trim());
           Thread.sleep(2000);

 LoginPage pro=PageFactory.initElements(driver, LoginPage.class);
           pro.clickOnProceed();
           Thread.sleep(2000);

 LoginPage pwd=PageFactory.initElements(driver, LoginPage.class);
           pwd.EnterPassword(pobj.getProperty("PASSWORD"));
           Thread.sleep(2000);

 LoginPage sub=PageFactory.initElements(driver, LoginPage.class);
           sub.clickOnSubmit();

} @AfterMethod public void configAm(ITestResult结果){System.out.println(“注销到Event2mobile”); LogoutPage lout = PageFactory.initElements(驱动程序,LogoutPage.class); lout.clickOnlogout(); } @AfterClass public void configAc(ITestResult结果){

if(result.getStatus()==ITestResult.FAILURE){
     extentTest.log(LogStatus.FAIL, "TEST CASE FAILED IS "+result.getName()); //to add name in extent report
     extentTest.log(LogStatus.FAIL, "TEST CASE FAILED IS "+result.getThrowable()); //to add error/exception in extent report
     String screenshotPath = screenshot.getScreenshot(driver, result.getName());
     extentTest.log(LogStatus.FAIL, extentTest.addScreenCapture(screenshotPath)); //to add screenshot in extent report
     //extentTest.log(LogStatus.FAIL, extentTest.addScreencast(screenshotPath)); //to add screencast/video in extent report
 }
 else if(result.getStatus()==ITestResult.SKIP){
     extentTest.log(LogStatus.SKIP, "Test Case SKIPPED IS " + result.getName());
 }
 else if(result.getStatus()==ITestResult.SUCCESS){
     extentTest.log(LogStatus.PASS, "Test Case PASSED IS " + result.getName());

 }


 extent.endTest(extentTest); //ending test and ends the current test and prepare to create html report
 driver.quit();
 System.out.println("========close browser=========");
 driver.close();
 driver.quit();

} @AfterSuite public void configAS(){scope.flush(); scope.close(); }

} *

展开
收起
几许相思几点泪 2019-12-23 21:50:21 653 分享 版权
阿里云 AI 助理回答

这段代码是一个基于Java的Selenium WebDriver测试框架的示例,它使用了ExtentReports来生成测试报告,并且包含了一些基础的测试配置和操作。下面是对这段代码功能的简要解析:

  1. Baseclass_libraries: 这是一个公共类,作为其他测试类的基础类,封装了一些初始化、配置、以及测试前后处理的方法。

  2. WebDriver driver: 静态变量,用于存储浏览器驱动实例,使得在所有方法中都能访问到这个浏览器实例。

  3. fileutil flib: 一个自定义的文件工具类实例,用于读取属性文件(如浏览器类型、URL等)。

  4. ExtentReports extent: 用于生成详细的测试报告,包括测试用例的状态、系统信息等。

  5. @BeforeSuite configBS(): 在测试套件开始前执行,初始化ExtentReports并添加系统信息。

  6. @BeforeClass configBc(): 在每个测试类开始前执行,根据配置选择启动Chrome、Firefox或IE浏览器,最大化窗口,设置隐式等待时间,并登录到特定的CMS系统。

  7. Properties pobj: 用于从属性文件加载测试环境相关的配置信息,如浏览器类型、URL、用户名和密码。

  8. PageFactory.initElements(driver, LoginPage.class): 使用Page Object模式初始化页面对象,使代码更易于维护和理解。

  9. @AfterMethod configAm(ITestResult result): 每个测试方法结束后执行,这里模拟了登出操作。

  10. @AfterClass configAc(ITestResult result): 测试类结束时执行,根据测试结果(成功、失败、跳过)更新ExtentReports,并关闭浏览器驱动。

  11. @AfterSuite configAS(): 测试套件结束后执行,清理并生成最终的ExtentReports报告。

注意点: - 代码中存在一些小错误,比如if(CMS_URL.equals("https"))else if(CMS_URL.equals("https: "))这样的条件判断可能不准确,通常URL应该以"http://"或"https://"开头。 - driver.quit();被调用了两次,实际上一次就足够关闭并退出浏览器驱动。 - 对于IE驱动初始化部分,缺少了具体的IEDriverServer路径设置。 - 使用Thread.sleep()进行线程暂停是不推荐的做法,因为它会导致测试效率降低且不够灵活,建议使用WebDriverWait或其他更高级的同步机制。

此代码片段展示了如何搭建一个基本的自动化测试框架,结合了Selenium WebDriver进行UI自动化测试和ExtentReports进行测试报告的生成。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: