首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用pytest对测试进行计时?

如何使用pytest对测试进行计时?
EN

Stack Overflow用户
提问于 2018-07-24 11:43:56
回答 1查看 3.6K关注 0票数 1

如何显示pytest执行的每个测试所用的时间?

我研究了pytest-timeout、pytest-timeit和pytest-benchmark。pytest-benchmark最接近,但需要手动包装每个测试。

最迫切的需要是弄清楚为什么在Py 3.x下测试花费的时间几乎是Py 2.7的两倍。我想测试的包中有231个顶级测试(由pytest标识),因此包装所有这些测试并不是一件容易的事情。

EN

回答 1

Stack Overflow用户

发布于 2018-07-24 17:26:41

可以通过自动使用fixture和pytest_runtest_makereport来实现这一点

将以下代码添加到根conftest.py中。它将打印出每个测试的测试持续时间。

代码语言:javascript
复制
@pytest.fixture(scope='function', autouse=True)
def testcase_result(request):
    print("Test '{}' STARTED".format(request.node.nodeid))
    def fin():
        print("Test '{}' COMPLETED".format(request.node.nodeid))
        print("Test '{}' DURATION={}".format(request.node.nodeid,request.node.rep_call.duration))
    request.addfinalizer(fin)


@pytest.mark.tryfirst
def pytest_runtest_makereport(item, call, __multicall__):
    rep = __multicall__.execute()
    setattr(item, "rep_" + rep.when, rep)
    return rep

希望能对你有所帮助!

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

https://stackoverflow.com/questions/51490166

复制
相关文章

相似问题

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