gpt4 book ai didi

python - 如何暂停pytest计时器?

转载 作者:行者123 更新时间:2023-12-03 23:39:09 24 4
gpt4 key购买 nike

我有一个参数化(py)测试,在运行逻辑之前清理数据库中的一些表:

@pytest.mark.parametrize('limit', [1, 1000, 5000000])
def test_calc(limit):
# clean test table in database !!!
assert calc(limit) == None
在测试结束时,我得到:
=========== 3 passed in 357.65s (0:05:57) ===========
问题是大约 2-3 分钟是表清理。
如何在清理之前暂停计时器并在清理完成后继续计时器?
就像在 Golang 的测试库中一样 - T.StopTimer() & T.StartTime()
我搜索了整个谷歌,我偶然发现最接近的是 freezegun .我试过了,但无法摆脱清理时间,也许我用错了 :/据我了解,它操纵的是 datetime 对象,而不是 pytest 的计时器(机制) :(

最佳答案

没有计时器停止; pytest存储 session 开始时的时间戳并打印当前时间和 session 结束时的时间戳之间的差异(如果您对代码中计算持续时间的确切位置感到好奇,它是 here )。如果清理代码未绑定(bind)到测试套件的其余部分,您可以将其移动到 pytest_unconfigure 的自定义 impl 中。钩。例子:

import time
import pytest


@pytest.fixture(autouse=True)
def db():
yield
import time
time.sleep(3)


def test_db():
assert True
运行测试将产生
============================== 1 passed in 3.01s ==============================
将数据库清理移动到 hookimpl:
# conftest.py

import time


def pytest_unconfigure(config):
import time
time.sleep(3)
报告的持续时间现在是
============================== 1 passed in 0.01s ==============================

关于python - 如何暂停pytest计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67090593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com