首页 > 解决方案 > 范围报告版本 4 - 为所有已执行的测试用例创建两个范围报告而不是一个 html 报告

问题描述

我正在使用范围报告版本 4,并且在执行所有测试用例后想要一个 .html 报告,但它会创建两个 html 报告来执行 testclass 中的 3 个方法在测试类中,我有这样的代码,@beforemethod 将在执行每个测试用例之前执行,然后在 @aftermethod 中执行测试用例 & 它将刷新 repot 以生成 Html 报告,然后使用 @afterclass 注释退出驱动程序**

    **Testclass:**
    public class HomePageTest extends BaseClass {

    HomePage homePage;

    public HomePageTest() {
        super();
    }

    @BeforeMethod
    @Parameters({ "platformName", "url", "udid" })
    public void setUpHomePageClass(String platformName, String url, String udid) throws Exception {
        try {
            BaseClass baseClass = new BaseClass();
            baseClass.initialize_driver(platformName, url, udid);
            homePage = new HomePage(driver);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    @BeforeMethod
    @Parameters({ "platformName", "url", "udid" })
    public void setUpHomePageClass(String platformName, String url, String udid) throws Exception {
        try {
            BaseClass baseClass = new BaseClass();
            baseClass.initialize_driver(platformName, url, udid);
            homePage = new HomePage(driver);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Test(priority = 1, description = "Verify element i.e Top50 Txt on homepage test")
    @Severity(SeverityLevel.NORMAL)
    @Description("TestCase Description: Verify element i.e Top50 Txt on homepage")
    public void verifyeElementsOnHomePageTest() throws Exception {
        log.info("***Executing verifyElementsOnHomeScreenTest***");
        logger = extent.createTest("Verify the elements on HomePage after redirecting to the splash screen");
        log.info("wait for continue_button to be clickable");
        TestUtil.waitForElementToBeClickable(By.id("continue_button"));
        homePage.clickContinueBtnAfterSplashScreen();
        log.info("Clicked on continue_button");
        log.info("waitForUserNameToBeClickable - username");
        boolean flag = homePage.validateTop50Txt();
        Assert.assertTrue(flag);
        log.info("Top50Txt isDisplayed");
        log.info("verifyElementsonHomeScreenTest Ended");
    }

    @Test(priority = 2, description = "Swipe to next video test")
    @Severity(SeverityLevel.NORMAL)
    @Description("TestCase Description: Swipe from one video to another")
    public void swipeToNxtVideoTest() throws InterruptedException {
        try {
            logger = extent.createTest("Swipe from one video to another & get the username ");
            log.info("***Executing swipeToNxtVideoTest***");
            log.info("waitForElementToPresenceOfElementLocated - username");
            TestUtil.waitForElementToPresenceOfElementLocated(By.id("user_name"));
            log.info("swipeverticalDown for nxt video");
            TestUtil.swipeverticalDown();
            log.info("swipeToNxtVideoTest Ended");
        } catch (Exception e) {
            e.printStackTrace();
            log.error("Found Exception - swipeToNxtVideoTest");
        }
    }

    /*
     * @Test(priority = 3, retryAnalyzer =
     * com.automation.listeners.RetryAnalyzer.class ) public void checkFailure() {
     * Assert.assertEquals(true, false); System.out.println("failed");
     * 
     * }
     */

    @AfterMethod
    public void getResult(ITestResult result) throws Exception {
        if (result.getStatus() == ITestResult.FAILURE) {
            logger.log(Status.FAIL,
                    MarkupHelper.createLabel(result.getName() + " - Test Case Failed", ExtentColor.RED));
            logger.log(Status.FAIL,
                    MarkupHelper.createLabel(result.getThrowable() + " - Test Case Failed", ExtentColor.RED));

            String screenshotPath = TestUtil.captureScreenAsBase64(driver, result.getName());
            logger.fail("Snapshot below: " + logger.addScreenCaptureFromPath(screenshotPath));

        } else if (result.getStatus() == ITestResult.SKIP) {
            logger.log(Status.SKIP,
                    MarkupHelper.createLabel(result.getName() + " - Test Case Skipped", ExtentColor.ORANGE));
        } else if (result.getStatus() == ITestResult.SUCCESS) {
            logger.log(Status.PASS,
                    MarkupHelper.createLabel(result.getName() + " Test Case PASSED", ExtentColor.GREEN));
        }
        extent.flush();
    }

    @AfterClass
    public void quitDriver() {
        getDriver().quit();
    }

  Please do let me know where I have been lacking in code; I might have a intuitions that there is an issue in testng annotations in my code

基类:

DesiredCapabilities capabilities = new DesiredCapabilities();

    public void setDriver(AppiumDriver<MobileElement> driver) {
        tdriver.set(driver);
    }

    public static synchronized AppiumDriver<MobileElement> getDriver() {
        return tdriver.get();
    }

    public BaseClass() {
        try {
            prop = new Properties();
            FileInputStream ip = new FileInputStream(
                    System.getProperty("user.dir") + "/src/main/java/com/automation/config/config.properties");
            prop.load(ip);

            // extend reports
            Date date = new Date();
            SimpleDateFormat dateFormatFolder = new SimpleDateFormat("dd_MMM_yyyy");
            File ResultDir = new File(System.getProperty("user.dir") + File.separator + "/FrameworkReports/"
                    + dateFormatFolder.format(date));
            // Defining Directory/Folder Name
            if (!ResultDir.exists()) { // Checks that Directory/Folder Doesn't Exists!
                ResultDir.mkdir();
            }
            SimpleDateFormat dateFormat = new SimpleDateFormat("dd_MMM_yyyy_hh_mm_ssaa");
            htmlReporter = new ExtentHtmlReporter(
                    ResultDir + "/" + "Report" + " " + dateFormat.format(date) + " .html");
            htmlReporter.config().setDocumentTitle("Automation Report");
            htmlReporter.config().setReportName("YOVO AUTOMATION");
            htmlReporter.config().setTheme(Theme.DARK);

            extent = new ExtentReports();
            extent.attachReporter(htmlReporter);
            extent.setSystemInfo("Host Name", "localhost");
            extent.setSystemInfo("Environment", "Windows 7");
            extent.setSystemInfo("User Name", "Abhishek Chauhan");

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public void initialize_driver(String platformName, String url, String udid) throws Exception {

        log = LogManager.getLogger(BaseClass.class);
        BasicConfigurator.configure();

        File appDir = new File("/src/main/resources/apk");
        File app = new File(appDir, "yovoapp-release.apk");
        mDirpath = System.getProperty("user.dir");
        mApkfilepath = mDirpath + "/app/yovoapp-release.apk";

        capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, platformName);
        capabilities.setCapability(MobileCapabilityType.UDID, udid);

        switch (platformName) {
        case "Android":
            capabilities.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 60);
            capabilities.setCapability("appPackage", prop.getProperty("androidAppPackage"));
            capabilities.setCapability("appActivity", prop.getProperty("androidAppActivity"));
            capabilities.setCapability("app", mApkfilepath);
            capabilities.setCapability("noReset", true);
            driver = new AppiumDriver<MobileElement>(new URL(url), capabilities);
            // tdriver.set(driver);
            // return getDriver();

        case "IOS":
            File classpathRoot = new File(System.getProperty("user.dir"));
            // File appDir = new File(classpathRoot, "/build/");
            // File app = new File(appDir, "WordPress.app");
            capabilities.setCapability("platformVersion", "9.2");
            capabilities.setCapability("deviceName", "iPhone 6");
            capabilities.setCapability("app", app.getAbsolutePath());
            // driver = new IOSDriver<MobileElement>(new
            // URL("http://127.0.0.1:4723/wd/hub"), caps);
            break;
        default:
            throw new Exception("Invalid platform! - " + platformName);
        }
         setDriver(driver);
    }

标签: selenium-webdriverappiumui-automationappium-androidextentreports

解决方案


推荐阅读