【发布时间】:2021-07-09 10:27:12
【问题描述】:
我有一个参数化 (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 的计时器(机制):(
【问题讨论】:
-
嗯,这就是总的测试持续时间 - 这是一个统计数据,你为什么要关心缩短它?
-
为什么“表清理”需要这么长时间?我会努力把它缩短到
-
因为我需要知道我的新代码在不计算引导步骤的情况下是提高还是降低了性能...
-
当每行占用几兆字节并且有 1.5B 记录的 HDD 速度较慢时,删除查询可能需要一些时间...
-
可以添加负责清理表的代码吗?
标签: python datetime pytest freezegun