Можно ли напечатать номер шлюза xdist для каждой строки в stdout?

Я использую модуль регистрации для печати на стандартный вывод. Трудно понять, какое сообщение соответствует работнику, когда я запускаю тесты с pytest-xdist

Можно ли напечатать номер шлюза xdist для каждой строки в stdout?

Пример сообщений журнала, которые у меня сейчас:

[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

1 ответ

Решение

Вы можете получить доступ к идентификатору шлюза через config.slaveinput приписывать. Пример:

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

Тест пройдет только тогда, когда xdist фактически вызывается, например, через pytest -n1 test_spam.pyв противном случае slaveinput атрибут не будет установлен.

Другие вопросы по тегам