像nosetests一样的Python基准测试工具?

MRo*_*lin 8 python testing benchmarking nosetests

我想要的是

我想为我的Python项目创建一组基准.我希望看到这些基准测试的性能随着我引入新代码而改变.我想以与测试Python相同的方式执行此操作,方法是运行实用程序命令,nosetests并获得格式良好的读数.

我喜欢什么 nosetests

nosetests工具通过在我的目录结构中搜索任何命名的函数test_foo.py并运行其中test_bar()包含的所有函数来工作.它运行所有这些函数并打印出它们是否引发了异常.

我想要类似的东西搜索所有文件bench_foo.py并运行所有包含的函数bench_bar()并报告它们的运行时.

问题

这样的工具存在吗?

如果不是什么好的起点?有些nose来源适合这个吗?

Hen*_*rik 4

nosetests可以运行任何类型的测试,因此您可以决定它们是否测试功能、输入/输出有效性等,或者性能或分析(或您想要的任何其他内容)。Python Profiler是一个很棒的工具,它随 Python 安装一起提供。

import unittest
import cProfile

class ProfileTest(unittest.TestCase):
    test_run_profiler:
        cProfile.run('foo(bar)')
        cProfile.run('baz(bar)')
Run Code Online (Sandbox Code Playgroud)

您只需向测试添加一行,或者向测试用例添加一个测试,以获取您想要分析的所有调用,并且您的主要源代码不会被测试代码污染。

如果您只想计算执行时间而不是所有分析信息,timeit是另一个有用的工具。