Behave框架setup/teardown(fixtures方式)实现及日志无输出排查
Behave环境钩子无日志输出的问题排查与解决
核心问题:日志模块未配置输出级别
Python的logging模块默认日志级别是WARNING,所有logger.info()级别的内容会被过滤,不会输出到控制台。这是你看不到日志的最主要原因。
解决方法:添加日志配置
在environment.py开头添加日志级别配置,将级别设为INFO(或更低的DEBUG):
import logging as logger # 配置日志级别和输出格式 logger.basicConfig(level=logger.INFO, format='%(levelname)s: %(message)s') import pdb def before_feature(context,feature): all_tags = feature.tags if '@x' in all_tags: context.x = True logger.info("Before feature") logger.info("") def after_feature(context, feature): logger.info("After feature") logger.info("") def before_scenario(context, scenario): logger.info("Before Scenario") logger.info("") if scenario.name == 'User has logged into Jenkins process with valid Credentials': # setup for the scenario # call() pass
其他可能的排查点
- environment.py位置错误:该文件必须放在项目的
features目录下,Behave才会自动加载它。如果放在其他目录,钩子函数不会被触发。 - 钩子分支未被触发:比如
before_feature里的@x标签,需要确保对应的feature文件中给feature打了@x标签,否则这个分支的日志不会执行。 - Behave日志捕获机制:默认Behave会捕获日志输出,可在运行命令中添加
--no-logcapture参数,强制日志直接输出到控制台:behave --no-logcapture
内容的提问来源于stack exchange,提问作者slimshaney
相关产品推荐
相关产品推荐

