首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有办法找出哪个pytest-xdist网关正在运行吗?

有办法找出哪个pytest-xdist网关正在运行吗?
EN

Stack Overflow用户
提问于 2014-06-24 19:52:25
回答 2查看 1.7K关注 0票数 6

我想为pytest-xdist生成的每个子进程/网关创建一个单独的日志文件。是否有一种优雅的方法可以找出当前处于哪个子进程/网关pytest中?我正在用位于conftest.py中的会话作用域夹具配置根记录器,如下所示:

代码语言:javascript
复制
@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)

如果我能够根据网关号在日志文件名中添加一个前缀,那就太好了,例如:

代码语言:javascript
复制
 fh = logging.FileHandler('xdist_gateway_%s.log' % gateway_number)

没有这一点,每个网关将使用相同的日志,日志将变得混乱。我知道我可以在文件名中添加时间戳。但这并不能让我快速区分哪个文件是哪个网关。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-04 11:35:57

我发现您可以通过以下方式访问网关id:

代码语言:javascript
复制
slaveinput = getattr(session.config, "slaveinput", None)

if slaveinput:
    gatewayid = slaveinput['slaveid']

当然,您需要在一个可以访问session.config对象的位置。

票数 3
EN

Stack Overflow用户

发布于 2018-05-24 18:50:45

类似于@康古罗斯的回答,但插入了pytest夹具范例:

您可以通过访问从输入字典获得工作人员id。这里有一个使测试和其他设备可以使用这些信息的夹具:

代码语言:javascript
复制
@pytest.fixture
def worker_id(request):
    if hasattr(request.config, 'workerinput'):
        return request.config.workerinput['workerid']
    else:
        return 'master'

这是关于pytest-xdist问题跟踪器/讨论的评论 (2016年)的引文。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24395125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档