有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

testng中的java设置testfailure给出了正回报

如果出现错误,我想将testng中某个方法的测试结果设置为failure。我发现这行代码应该可以做到这一点

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

但是,如果我引发了一个错误,我仍然不会从我的总测试运行中得到任何失败

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

在上面的运行中,应该有两次失败,但什么都没有。设置测试结果的规则位于运行测试的不同类中。它是在一个类中设置的,我把所有的检查页代码都放在这个类中,这样我就不会有夸夸其谈的测试了

设置它的代码

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}]

所以它被设置好了,但没有被任何东西拾取。是我在另一节课上设置的问题还是其他问题


共 (2) 个答案

  1. # 1 楼答案

    @stevedc捕获错误,然后在测试结束时将其作为错误消息输出到Assert failure中。差不多

    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);
            }
        }
    }
    
  2. # 2 楼答案

    你的测试不应该与你的报告直接互动。要指示JUnit中的错误,只需抛出异常或asset in your tests