java - 跳过的测试不会在 ExtentReport4 中记录为“已跳过”

标签 java selenium testing extentreports selenium-extent-report

我进行了 2 个测试:addNewVideodeleteRecentVideo,其中第二个测试取决于第一个测试。第一个失败后,第二个将被忽略并且它不会运行。打开我的范围报告后,它看起来像这样: enter image description here

我预计会有 2 项测试 - 1 项失败,1 项跳过,但报告中未正确显示。

ExtentListener.class


import com.aventstack.extentreports.*;
import com.aventstack.extentreports.markuputils.*;
import org.testng.*;
import java.util.*;
import static constants.FileResources.REPORT_DIR;

public class ExtentListener implements ITestListener {

    private static Date d = new Date();
    private static String fileName = String.format("%s%s%s%s", d.toString().replaceAll("[: ]", "_"), "_", System.getenv("env"), ".html");
    private static ExtentReports extent = ExtentManager.createInstance(REPORT_DIR + fileName);
    public static ThreadLocal<ExtentTest> testReport = new ThreadLocal<>();

    @Override
    public void onTestStart(ITestResult result) {
        ExtentTest test = extent.createTest(result.getTestClass().getName() + "." + result.getMethod().getMethodName());
        test.assignCategory(result.getTestClass().getName());
        testReport.set(test);
    }

    @Override
    public void onTestSuccess(ITestResult result) {
        String methodName = result.getMethod().getMethodName();
        String logText = methodName + " PASSED";
        Markup m = MarkupHelper.createLabel(logText, ExtentColor.GREEN);
        testReport.get().pass(m);
    }

    @Override
    public void onTestFailure(ITestResult result) {
        String methodName = result.getMethod().getMethodName();
        String excepionMessage = Arrays.toString(result.getThrowable().getStackTrace());
        testReport.get().fail("<details>" + "<summary>" + "<b>" + "<font color=" + "red>" + "Exception occured: Expand to check details"
                + "</font>" + "</b >" + "</summary>" + excepionMessage.replaceAll(",", "<br>") + "</details>" + " \n");
        String failureLog = methodName + " FAILED";
        Markup m = MarkupHelper.createLabel(failureLog, ExtentColor.RED);
        testReport.get().log(Status.FAIL, m);
    }

    @Override
    public void onTestSkipped(ITestResult result) {
        String methodName = result.getMethod().getMethodName();
        String logText = "<b>" + methodName + " SKIPPED" + "</b>";
        Markup m = MarkupHelper.createLabel(logText, ExtentColor.ORANGE);
        testReport.get().skip(m);
    }

    @Override
    public void onTestFailedButWithinSuccessPercentage(ITestResult result) {

    }

    @Override
    public void onStart(ITestContext context) {

    }

    @Override
    public void onFinish(ITestContext context) {
        if (extent != null) {
            extent.flush();
        }
    }
}

我尝试实现 IInvokedMethodListener 但没有成功。 有没有办法在 ExtentReport4 上正确显示跳过的测试?

最佳答案

伙计们,我也遇到了这个问题,下面的代码对我有用。 像这样定义 testListener,然后在 Baseclass 启动之前使用 @listeners(TestListeners.class) 在 Baseclass 中调用这个 testListener 类。

注意:我使用过 Spark Extentreport

公共(public)类 TestListeners 实现 ITestListener {

@覆盖 公共(public)无效onTestSkipped(ITestResult结果){

Baseclass.extenttest = Baseclass.extent.createTest(result.getMethod().getDescription()).assignCategory("SkipedTest");
Baseclass.extenttest .log(Status.SKIP, result.getThrowable());
Baseclass.extenttest .log(Status.SKIP, result.getMethod().getDescription());
Baseclass.extenttest .log(Status.SKIP,  MarkupHelper.createLabel(result.getName(), ExtentColor.YELLOW));
Baseclass.extent.flush();

} }

在您的测试类中定义@Test,如下所示

@Test(description = "测试用例名称", dependentOnMethods = { "所依赖的方法名称"})

enter image description here

关于java - 跳过的测试不会在 ExtentReport4 中记录为“已跳过”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59500703/

相关文章:

powershell - 如何创建强制端口进入监听状态以测试 PowerShell 功能的服务?

java - org.jboss.msc.service.StartException 服务 jboss.web.deployment.default-host./: Failed to start service

Java 文本字段焦点

python - 检查 python/selenium 中的代理

javascript - 如何在 selenium-webdriver 中禁用 promise 管理器

java - 如何使用 Hamcrest 断言一个通用的整数列表?

unit-testing - 带有 Selenium 的 GWT 2.0

java - 安卓闹钟问题

java - setTypeface 空指针异常

css - 单选按钮的 CSS 选择器 selenium 代码是什么?