包含设置时间的单元测试

4 投票
1 回答
1462 浏览
提问于 2025-04-18 13:25

如何记录每个单元测试的时间,包括准备时间呢?

我有一个测试基础,它的准备过程需要花费不少时间。我有几个测试是基于这个测试基础的,并且我有一个装饰器,理论上应该能够打印出每个测试运行所花费的时间:

class TestBase(unittest.TestCase):
    def setUp(self):
        # some setup procedure that takes a long time

def timed_test(decorated_test):
    def run_test(self, *kw, **kwargs):
        start = time.time()
        decorated_test(self, *kw, **kwargs)
        end = time.time()
        print "test_duration: %s (seconds)" % (end - start)
    return run_test


class TestSomething(TestBase):
    @timed_test
    def test_something_useful(self):
        # some test

但是,当我运行这些测试时,发现我只打印出了测试运行的时间,并没有包括准备时间。另外,相关的问题可能是:在你的测试框架之外处理时间记录是否更好?

1 个回答

5

我不会重新发明轮子,而是会使用nose这个测试工具,配合nose-timer插件

这是一个用于nosetests的计时插件,可以回答一个问题:每个测试花了多少时间?

想了解更多关于nose-timer的信息,可以查看这里:

撰写回答