我想为pytest-xdist生成的每个子进程/网关创建一个单独的日志文件。是否有一种优雅的方法可以找出当前处于哪个子进程/网关pytest中?我正在用位于conftest.py中的会话作用域夹具配置根记录器,如下所示:
@pytest.fixture(scope='session', autouse=True)
def setup_logging():
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
fh = logging.FileHandler('xdist.log')
fh.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)如果我能够根据网关号在日志文件名中添加一个前缀,那就太好了,例如:
fh = logging.FileHandler('xdist_gateway_%s.log' % gateway_number)没有这一点,每个网关将使用相同的日志,日志将变得混乱。我知道我可以在文件名中添加时间戳。但这并不能让我快速区分哪个文件是哪个网关。
发布于 2014-07-04 11:35:57
我发现您可以通过以下方式访问网关id:
slaveinput = getattr(session.config, "slaveinput", None)
if slaveinput:
gatewayid = slaveinput['slaveid']当然,您需要在一个可以访问session.config对象的位置。
发布于 2018-05-24 18:50:45
类似于@康古罗斯的回答,但插入了pytest夹具范例:
您可以通过访问从输入字典获得工作人员id。这里有一个使测试和其他设备可以使用这些信息的夹具:
@pytest.fixture
def worker_id(request):
if hasattr(request.config, 'workerinput'):
return request.config.workerinput['workerid']
else:
return 'master'这是关于pytest-xdist问题跟踪器/讨论的评论 (2016年)的引文。
https://stackoverflow.com/questions/24395125
复制相似问题