首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >py.test中夹具安装时间的分解

py.test中夹具安装时间的分解
EN

Stack Overflow用户
提问于 2016-09-20 20:11:40
回答 2查看 2.3K关注 0票数 2

我有一些py.test测试,这些测试有多个依赖的和参数化的夹具,我想测量每个夹具所花费的时间。但是,在使用--durations的日志中,它只显示了用于实际测试的setup的时间,但没有给出每个单独的夹具所用的时间。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-21 15:47:22

这方面没有任何内置的东西,但是您可以通过在一个安装钩文件中使用新的conftest.py轻松地实现自己。

票数 0
EN

Stack Overflow用户

发布于 2018-10-29 20:48:50

下面是如何做到这一点的一个具体示例:

代码语言:javascript
复制
import logging
import time

import pytest

logger = logging.getLogger(__name__)

@pytest.hookimpl(hookwrapper=True)
def pytest_fixture_setup(fixturedef, request):
    start = time.time()

    yield

    end = time.time()

    logger.info(
        'pytest_fixture_setup'
        f', request={request}'
        f', time={end - start}'
    )

产出类似于:

代码语言:javascript
复制
2018-10-29 20:43:18,783 - INFO pytest_fixture_setup, request=<SubRequest 'some_data_source' for <Function 'test_ruleset_customer_to_campaign'>>, time=3.4723987579345703

神奇的是钩子包装

pytest插件可以实现钩子包装器,它可以包装其他钩子实现的执行。钩子包装器是一个生成器函数,它只产生一次。当pytest调用钩子时,它首先执行钩子包装并传递与常规钩子相同的参数。

我遇到的一个相当重要的问题是,conftest.py必须位于项目的根文件夹中,才能找到pytest_fixture_setup钩子。

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

https://stackoverflow.com/questions/39602983

复制
相关文章

相似问题

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