【问题标题】:How to Generate extent report in Geb & Spock如何在 Geb & Spock 中生成范围报告
【发布时间】:2017-01-24 13:50:47
【问题描述】:

我们正在使用 Geb 和 Spock 框架来测试 Web 应用程序并与范围报告集成。我们为范围报告功能创建了一个单独的类,使用 JUnit @Rule 在所有测试用例之间进行访问。现在的问题是当TC 失败时,它不会为失败的场景生成报告,而是为成功的案例创建报告。有没有办法使用 Spock TC 捕获 TestWatcher 失败的异常。或者 Spock 中是否有类似 TestWatcher 的类执行以下功能。

@Rule
    public TestRule watchman = new TestWatcher() {
    @Override
    public Statement apply(Statement base, Description description) {
        return super.apply(base, description)
    }
    @Override
    protected void failed(Throwable e,Description description) {
        TestUtils.takeScreenshot("testimg", "png", driver)
        println("fail")
        ExtentReports extent = createReport()
        ExtentTest test = extent.startTest(description.getMethodName(), "Test failed, click here for further details")
        // step log
        String img = test.addScreenCapture(".testimg.png")
        test.log(LogStatus.FAIL, "Failure : "+ e.toString(),img)
        flushReports(extent, test)
    }

    @Override
    protected void succeeded(Description description) {
        ExtentReports extent = createReport()
        ExtentTest test = extent.startTest(description.getMethodName(), "-")
        test.log(LogStatus.PASS, "Passed")
        flushReports(extent, test)
    }

    @Override
    protected void skipped(AssumptionViolatedException e, Description description) {
        ExtentReports extent = createReport();
        ExtentTest test = extent.startTest(description.getMethodName(), "-")
        // step log
        test.log(LogStatus.SKIP, "Skipped")
        flushReports(extent, test)
    }

    @Override
    protected void finished(Description description) {
        browser.close()
    }
}
private ExtentReports createReport() {
    ExtentReports extent = new ExtentReports(".testReport.html", false);
    return extent
}
private void flushReports(ExtentReports extent, ExtentTest test){
    extent.endTest(test)
    extent.flush()
}

【问题讨论】:

    标签: report spock geb extentreports extent


    【解决方案1】:

    Spock 对 JUnit 规则有一些基本的支持。

    如果您的特定情况不起作用,您需要编写一个 Spock 扩展,让您可以连接到测试生命周期。

    另见Execute some action when Spock test fails

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多