【问题标题】:Is it possible to print xdist gateway number to each line in stdout?是否可以将 xdist 网关编号打印到标准输出中的每一行?
【发布时间】:2018-02-22 18:16:11
【问题描述】:

我正在使用日志记录模块打印到标准输出。 当我使用 pytest-xdist 运行测试时,很难理解对应于 worker 的消息是什么

是否可以在标准输出的每一行打印 xdist 网关号?

我现在拥有的日志消息示例:

[02-22-2018_19.44.11] [DEBUG] [file.py:96] - Message
[02-22-2018_19.44.11] [DEBUG] [file2.py:16] - Message
[02-22-2018_19.44.12] [DEBUG] [file3.py:23] - Message
[02-22-2018_19.44.12] [DEBUG] [file4.py:30] - Message

期望:

[02-22-2018_19.44.11] [gw1] [DEBUG] [file.py:96] - Message
[02-22-2018_19.44.11] [gw0] [DEBUG] [file2.py:16] - Message
[02-22-2018_19.44.12] [gw0] [DEBUG] [file3.py:23] - Message
[02-22-2018_19.44.12] [gw3] [DEBUG] [file4.py:30] - Message

gw1 [02-22-2018_19.44.11] [DEBUG] [file.py:96] - Message
gw0 [02-22-2018_19.44.11] [DEBUG] [file2.py:16] - Message
gw0 [02-22-2018_19.44.12] [DEBUG] [file3.py:23] - Message
gw3 [02-22-2018_19.44.12] [DEBUG] [file4.py:30] - Message

【问题讨论】:

    标签: python pytest xdist


    【解决方案1】:

    您可以通过config.slaveinput 属性访问网关ID。示例:

    def test_spam(pytestconfig):
        assert hasattr(pytestconfig, 'slaveinput')
        assert pytestconfig.slaveinput['slaveid'] == 'gw0'
    

    只有在实际调用 xdist 时,测试才会通过,例如通过pytest -n1 test_spam.py,否则不会设置slaveinput 属性。

    【讨论】:

    • 但我不仅在测试中使用日志消息。那么如何从测试中获取“gw”我知道,但是如何全局设置它以进行日志记录 - 我不(可能)
    • 所以您不知道如何在测试之外访问configimport pytest; config = pytest.config; logging.info(config.slaveinput['slaveid']).
    • @hoefling 没有 pytest.config 这样的东西我正在使用 3.7.3
    • @Imran 答案是 2.5 岁;从那时起,pytest.config 被弃用并被删除。
    • 是的。无论如何都无法在测试之外访问 pytest 配置
    猜你喜欢
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2014-08-11
    • 2013-01-19
    • 2021-11-30
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    相关资源
    最近更新 更多