Задаването на testfailure в testng дава положителен резултат

Искам да настроя резултата от теста на метод в testng на грешка, ако има грешка. Открих, че този ред код трябва да свърши работа

Reporter.getCurrentTestResult().setStatus(ITestResult.FAILURE);

Но ако провокирам грешка, пак няма да получа грешка от моето цялостно тестово изпълнение

===============================================
LoginTesten
Total tests run: 4, Failures: 0, Skips: 0
===============================================

В горния цикъл трябва да има 2 повреди, но няма нищо. Правилото за задаване на резултата от теста е в различен клас от този, от който се изпълнява тестът. Настроен е в клас, където поставям целия си код на страницата за проверка, така че да нямам бомбастичен тест.

Кодът, където е зададен

public void checkTextOnPage(String text, boolean expected,String errorMessage, ArrayList<WebDriver> browsers, Logger Logger, String map) throws IOException {
        for(WebDriver driver: browsers){
            try {
                Assert.assertEquals(driver.getPageSource().contains(text), expected, errorMessage);
            }catch (AssertionError e){}
            Capabilities dataBrowser = ((RemoteWebDriver)driver).getCapabilities();
            if(driver.getPageSource().contains(text) == expected){
                Logger.info("[" + this.dateFormat.format(this.date) + "]" +" Browser:" + dataBrowser.getBrowserName() + " -- Version:" + dataBrowser.getVersion() + " -- Text : " + text + " => PRESENT");
            }else if (driver.getPageSource().contains(text) != expected){
                Logger.warning("[" + this.dateFormat.format(this.date) + "]" +" Browser:" + dataBrowser.getBrowserName() + " -- Version:" + dataBrowser.getVersion() + " -- Text : " + text + " => NOT PRESENT");
                File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
                FileUtils.copyFile(screenshot, new File(map + "text_" + text + "_NotPresent_" + this.screenshotCount + "_" + dataBrowser.getBrowserName() + ".png"));
                this.screenshotCount++;
                Reporter.getCurrentTestResult().setStatus(ITestResult.FAILURE);
            }
        }
    }

това е моят тест, който се изпълнява

public void loginIMWWelcomeNOT() throws InterruptedException, IOException {
    this.getLogin().goToPage(this.getDriverList(), TestConstants.Test_URL);
    this.getBrowserMovement().typeTextElementXpath(".//*[@name='username']", this.getDriverList(), "intix1");
    this.getBrowserMovement().typeTextElementXpath(".//*[@name='password']", this.getDriverList(), "Jasmine11");
    this.getBrowserMovement().clickElementXpath(".//*[@name='logon']", this.getDriverList());
    this.getCheckPage().checkTextOnPage("grazjfnzeofnez", true, "We komen niet terecht op de welkom pagina", this.getDriverList(), this.getLOGGER(), this.getScreenshotMap());
    System.out.println(Reporter.getCurrentTestResult());
}

Резултатът, който получавам от този код, е

apr 04, 2016 4:50:37 PM Data.CheckPage checkTextOnPage
WARNING: [2016-04-04 165030] Browser:chrome -- Version:49.0.2623.110 -- Text : grazjfnzeofnez => NOT PRESENT
[TestResult name="" status=FAILURE method=LoginTesten.loginIMWWelcomeNOT()[pri:0, instance:Data.Tests.LoginTesten@1e643faf] output={null}]

Така че се настройва, но не се прихваща от нищо. Проблемът ли е, че го зададох в другия клас или нещо друго?


person stevedc    schedule 04.04.2016    source източник


Отговори (2)


@stevedc Хванете грешката и след това в края на вашия тест я изведете в Assert error като съобщение за грешка. Нещо като

public void checkTextOnPage(String text, boolean expected,String errorMessage, ArrayList<WebDriver> browsers, Logger Logger, String map) throws IOException {
    for(WebDriver driver: browsers){
        try {
            Assert.assertEquals(driver.getPageSource().contains(text), expected, errorMessage);
        }catch (AssertionError e){}
        Capabilities dataBrowser = ((RemoteWebDriver)driver).getCapabilities();
        if(driver.getPageSource().contains(text) == expected){
            Logger.info("[" + this.dateFormat.format(this.date) + "]" +" Browser:" + dataBrowser.getBrowserName() + " -- Version:" + dataBrowser.getVersion() + " -- Text : " + text + " => PRESENT");
        }else if (driver.getPageSource().contains(text) != expected){
            Logger.warning("[" + this.dateFormat.format(this.date) + "]" +" Browser:" + dataBrowser.getBrowserName() + " -- Version:" + dataBrowser.getVersion() + " -- Text : " + text + " => NOT PRESENT");
            File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
            FileUtils.copyFile(screenshot, new File(map + "text_" + text + "_NotPresent_" + this.screenshotCount + "_" + dataBrowser.getBrowserName() + ".png"));
            this.screenshotCount++;
            Assert.assertEquals(true, false, e);
        }
    }
}
person Raymond Kelly    schedule 07.04.2016

Вашите тестове не трябва да взаимодействат директно с вашите отчети. За да посочите грешка в JUnit, просто хвърлете изключение или актив във вашите тестове.

person Jan Nielsen    schedule 04.04.2016
comment
Но ако разчитам на assert, той просто ще отпадне от теста без никакво регистриране. Бих могъл да го хвана и да добавя регистрирането, но това е същият резултат, тестът ще се провали напълно и искам да го пусна до края - person stevedc; 05.04.2016
comment
Че отговорността на вашата система за изграждане, напр. stackoverflow.com/questions/4174696/. - person Jan Nielsen; 05.04.2016