11

好的,所以在我的 environment.py 文件中,我可以通过以下方式记录内容:

logging.basicConfig(level=logging.DEBUG, filename="example.log")

def before_feature(context, feature):
    logging.info("test logging")

但是当我在步骤文件中时,我无法执行日志记录:

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

@given("we have a step")
def step_impl(context):
    logger.debug("Test logging 2")

步骤内的日志消息不显示。我正在使用 python 行为模块。有任何想法吗?

我尝试在运行行为时启用和禁用日志捕获,但这没有区别。

4

3 回答 3

4

默认情况下,behaviour 倾向于在功能执行期间捕获日志,并且仅在失败的情况下显示它们。

要禁用此功能,您可以 log_capture=false 在 behavior.ini中设置

或者,您可以使用--no-logcapture命令行选项

进一步阅读:Behave API 参考Behave LogCapture

于 2019-03-13T05:51:58.947 回答
3

什么对我有用:

behave --no-capture --no-capture-stderr --no-logcapture

并在 environment.py 中添加以下截图:

    def after_step(context, step):
        print("")

为什么:我发现行为没有记录一个步骤的最后一个打印语句。所以我只是在每一步之后用上一个截图添加了一个空打印。

希望它有所帮助

于 2020-11-05T08:40:35.533 回答
0

在 steps.py 中从 environment.py 导入日志为我解决了问题。

from features.environment import logging

我不确定,但我想问题是每次导入日志时它都会重写你以前的配置,因为disable_existing_loggers默认情况下是 True。(是解释这一点的文档段落)

于 2020-01-30T11:20:36.847 回答