在conftest里面实例化log的类,框架的log会实时打印,但是跑到脚本的时候,日志就不会实时打印,而是必须等case跑完之后一下子全部打印出来,这是为什么
这可能是因为在conftest里面实例化的log类使用了缓存,而这个缓存会在整个测试运行期间保存日志信息,直到测试结束后一次性输出。你可以尝试在conftest中配置log类的flush设置或者在脚本中手动刷新日志缓存以实现实时打印。
不知道你这个问题是否已经解决, 如果还没有解决的话:根据参考资料第一段落提供的代码示例,Logger类中已经包含了输出到控制台和输出到文件的处理器(handler)。如果在模块或函数中实例化了Logger类并使用该实例打印测试日志,同时在pytest的log配置中指定了日志级别和输出格式,则在控制台和日志文件中都会实时输出测试日志。
如果在pytest配置中使用了log_cli=true
,则只会输出到控制台,需要注意的是控制台输出的日志应设置级别和格式等。
如果以上几种情况都没有出现,可能是因为在代码中使用了logging
模块打印了日志信息。请检查代码是否使用了logging.getLogger()
而不是Logger().logger
打印日志,这样会产生两个不同的logger实例,一个会按照配置直接输出到控制台,另一个会将日志缓存起来,需要等待缓存达到条件后一次性输出。