使用pytest fixture进行性能测试-yielf相关错误



我正在尝试使用pytest和模块化夹具来实现一个非常基本的简单性能测试。

我已经有了一个时间跟踪的固定装置:

@pytest.fixture
def time_tracker():
tick = datetime.now()
yield
tock = datetime.now()
diff = tock - tick
print(f"n runtime: {diff.total_seconds()}")
return diff

我试着做一些类似的事情:

@pytest.fixture
def performance_testing(time_tracking):
diff = time_tracking
if diff > timedelta(seconds=30):
raise ValueError("test is taking too long")

但我对收益率有问题。我认为,当我从time_tracker中让步时,上下文会返回到调用函数,即performance_testing,而不是测试函数本身。

我的错误:

@pytest.fixture
def performance_testing(time_tracker):
diff = time_tracker
>       if diff > timedelta(seconds=30):
E       TypeError: '>' not supported between instances of 'NoneType' and 'datetime.timedelta'

我知道我可以通过复制代码和添加if diff > timedelta(30)逻辑来很好地实现这一点,但我想使用模块化固定装置。

这可能吗?如果没有,是否有一个优雅的";pytest";这样做的方式?此外,我对下载pytest插件不感兴趣。

yield类似于return,可以采用参数。只写yield tick而不写yield

最新更新