python - 在单元测试中使用耗时作为断言

标签 python unit-testing pytest

我正面临这样一种情况,我想确保如果修改了一个方法,它的运行时间不会超过 X 毫秒(本质上,如果该函数较慢,它会减慢我们网页上的搜索结果,这对销售有不良影响)。

我们有单元测试(特别是代码是在 python 下完成的,我们使用 py.test),第一个想法是断言如果函数在 X 毫秒内没有执行,则将测试标记为失败(或发出警告)。

但是,这感觉很危险(例如,并非所有计算机的速度都相同),而且我不太确定这是单元测试的工作。

有人遇到过类似的情况吗?对我来说,速度是一种特性,我想确保这样的特性在未来不会随着代码的发展而丢失。

如果单元测试不是答案,您会推荐哪些其他替代方案?

谢谢

最佳答案

您可以考虑使用 pytest-timeout plugin作为一个开始。它目前只允许指定秒数(作为 float )。但它可以扩展为使用更具适应性的时序,例如 pystone 编号,因此可以测量您的计算机执行 pystone 基准测试的速度,该基准可以缓存,然后您可以指定您的测试有多少“pystone”被允许采取。

关于python - 在单元测试中使用耗时作为断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12190596/

相关文章:

python - 带数据框的条件语句/If 语句

python - 使用 unittest 和 argparse 测试参数解析

python - 如何测试单例 __del__() 方法?

python - pytest assert_used_with 不适用于 Django 管理命令

java - 在单元测试运行期间禁用某些方面

python - sqlalchemy.exc.ResourceClosedError : This Connection is closed error

python - Pyspark 依赖任何 ID 的任何滑动窗口

python - 使用 python 解析/提取表数据

生成多元分布时 mvrnorm 经验设置的 Python 模拟?

unit-testing - 测试 RxJava .delay(20, SECONDS)