当前位置: 首页 > 面试题库 >

附加日志记录JBehave

锺离伟彦
2023-03-14
问题内容

场景是这样的:

我们正在使用JBehave和Selenium进行系统,集成和端到端测试。我正在检查超过20个值的页面上的计算结果以进行验证。使用Junit
Assert,如果其中一个值不正确的第一个实例,则整个测试将失败。我想做的是,如果遇到断言失败,那么测试将继续执行,这样我就可以整理一次测试而不是多次测试中所有不正确的值。

为此,我捕获了断言并将未通过验证的所有内容写到日志文件中。这给我带来了两个问题:

1)我写断言失败的日志文件不包含发生异常时正在运行的JBehave Story或Scenario的名称。

2)JBehave故事或场景被列为“通过”,我希望它被列为“失败”。

有什么方法可以将Story和Scenario的名称注销到其他日志文件中,或者将其他日志写入JBehave日志文件中?

如何将故事/场景标记为失败?

在JBehave配置中,我有:

configuredEmbedder()
    .embedderControls()
    .doIgnoreFailureInStories(true)
    .doIgnoreFailureInView(false)
    .doVerboseFailures(true)
    .useStoryTimeoutInSecs(appSet.getMaxRunningTime());

.useStoryReporterBuilder(
    new StoryReporterBuilder()
    .withDefaultFormats()
    .withViewResources(viewResources)
    .withFormats(Format.HTML, Format.CONSOLE)
    .withFailureTrace(true)
    .withFailureTraceCompression(true)
    .withRelativeDirectory("jbehave/" + appSet.getApplication())

问题答案:

是的,您可以创建自己的StoryReporter:

 public class MyStoryReporter implements org.jbehave.core.reporters.StoryReporter{
     private Log log = ...

     @Override
     public void successful(String step) {
        log.info(">>successStep:" + step);
     }

    @Override
    public void failed(String step, Throwable cause) {
        log.error(">>error:" + step + ", reason:" + cause);
    }

     ...
 }

并像这样注册:

.useStoryReporterBuilder(
    new StoryReporterBuilder()
         .withReporters(new MyStoryReporter())
..


 类似资料:
  • 我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?

  • 问题内容: 我正在考虑将Redis用于Web应用程序日志记录目的。我用谷歌搜索,有人将日志转储到Redis队列/列表中,然后将计划的工作人员转储到磁盘中。 http://nosql.mypopescu.com/post/8652869828/another-redis-use-case- centralized-logging 我希望寻求理解,为什么不直接使用Redis持久化到磁盘?如果我分配了一

  • logging 模块自 2.3 版以来一直是 Python 标准库的一部分。在 PEP 282 中有对它的简洁描述。除了 基础日志教程 之外,这些文档是非常难以阅读的。 日志记录一般有两个目的: 诊断日志 记录与应用程序操作相关的日志。例如,当用户遇到程序报错时, 可通过搜索诊断日志以获得上下文信息。 审计日志 为商业分析而记录的日志。从审计日志中,可提取用户的交易信息, 并结合其他用户资料构成用

  • 主要内容:修改日志管理器配置每个初学者都很熟悉在有问题的代码中使用 System.out.println 方法在控制台打印消息,来帮助观察程序运行的操作过程。如果你使用  System.out.println 方法,一旦发现问题的根源,就要将这些语句从代码中删去。如果接下来又出现了问题,就需要再插入几个调用 System.out.println 方法的语句,如此反复,增加了工作量。 日志用来记录程序的运行轨迹,方便查找关键信

  • 提示 你可以在 GitHub 上查阅当前文章涉及的代码样例。 ASP.NET Core 应用程序 一旦使用了 AddDbContext 或 AddDbContextPool ,EF Core 就会自动集成 ASP.NET Core 的日志记录机制。因此,当使用 ASP.NET Core 的时候,日志记录的配置与 ASP.NET Core 帮助文档 中所描述的是一致的。 其他应用程序 EF Core

  • 配置 // 日志记录到文件 func LoggerToFile() gin.HandlerFunc { logFilePath := config.Log_FILE_PATH logFileName := config.LOG_FILE_NAME //日志文件 fileName := path.Join(logFilePath, logFileName)