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

时间:2018-07-24 03:43:56

标签: python testing automated-tests pytest

如何显示pytest执行的每个测试花费的时间?

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

最紧迫的需求是弄清楚为什么在Py 3.x下进行测试需要的时间几乎是Py 2.7的两倍。我要测试的软件包中有231个顶级测试(由pytest标识),因此将所有这些包装起来并非易事。

1 个答案:

答案 0 :(得分:3)

您可以通过自动使用固定装置和pytest_runtest_makereport

实现此目的

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

@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

希望对您有帮助!