You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:Pytest-benchmark脚本中预计算测试数据是否可行且不影响计时?

关于Pytest-benchmark中预计算测试输入的有效性说明

这种预计算测试输入的方案是完全有效的,不会影响Pytest-benchmark的基准测试计时,原因如下:

  • Pytest在加载测试模块(比如你的script.py)时,会先执行所有模块级别的代码。你示例里的INPUTS = compute_inputs()就属于这部分,它会在任何测试(包括基准测试)开始前就完成计算,不会被计入基准测试的计时范围。
  • Pytest-benchmark的计时逻辑是从调用benchmark()函数时才启动,只统计被包裹的目标函数(也就是示例里的something)的执行时间。哪怕你把预计算好的INPUTS作为参数传给something(比如写成benchmark(something, INPUTS)),参数传递的操作也是在计时开始前完成的,不会对基准结果产生干扰。

举个更直观的验证示例:

def compute_inputs():
    # 模拟耗时的输入计算
    import time
    time.sleep(2)
    return [1,2,3,4]

INPUTS = compute_inputs()

def process_data(data):
    # 实际要基准测试的逻辑
    return sum(data)

def test_benchmark_process(benchmark):
    # 计时仅统计process_data的执行时间,与compute_inputs的2秒无关
    result = benchmark(process_data, INPUTS)
    assert result == 10

执行pytest script.py -v时,你会看到模块加载阶段会先等待2秒(compute_inputs的执行时间),而基准测试的报告里只会显示process_data的执行耗时,完全不受预计算步骤的影响。

内容的提问来源于stack exchange,提问作者aaxx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 04:40:23