Skip to main content
 首页 » 编程设计

python之如何在单元测试期间使用 Nosetests 分析代码

2025年05月04日11sharpest

我查看了 --with-timer 和 --with-profile 来分析我的测试,但这些选项要么提供的信息太少,要么提供的信息太多。

例如,如果我有以下测试:

def test_foo(): 
    do_something() 
    do_something_else() 

我只想描述测试中的每个函数调用或每一行花费了多长时间。所以输出将是这样的:

   do_something() : .5 seconds 
   do_something_else() : .5 seconds 
   test_foo() : 1 seconds 

请您参考如下方法:

受此启发talk ,您可以使用 Xunit 插件并对其 xml 进行后处理

使用--with-xunit和下面的代码来处理nosetests.xml

from xml.etree.cElementTree import parse  
from operator import itemgetter  
 
elems = parse(open("nosetests.xml")).getiterator("testcase")  
tests = sorted(((e.get("name"), int(e.get("time"))) for e in elems),  
               key=itemgetter(1), reverse=1)  
 
for test in (test for test in tests if test[1]):  
    print "%s: %s sec" % test