2012-07-25 4 views
16

Ich würde cProfile-Modul verwenden, um meine Komponententests zu profilieren. Aber wenn ich renneWarum cProfile Modul funktioniert nicht mit Unittest?

python -mcProfile mytest.py 

Ich bekam 'lief 0 Tests in 0,000s'. Hier ist der Quellcode von mytest.py

import unittest 

class TestBasic(unittest.TestCase): 
    def testFoo(self): 
     assert True == True 

if __name__ == '__main__': 
    unittest.main() 

ich mit anderen komplexeren Unittests als auch getestet haben. Habe immer 'Ran 0 Tests' wenn ich es mit cProfile starte. Bitte helfen Sie.

UPDATE: Mein Betriebssystem ist MacOS 10.7 mit integriertem Python 2.7. Derselbe Code funktioniert auf Ubuntu korrekt.

+0

funktioniert für mich unter Ubuntu - python2.6/2.7 :) Hast du es nur mit dem 'Profile' Modul versucht? –

+1

Danke, Julien. Gerade getestet auf Ubuntu und es funktioniert. Sieht aus wie ein plattformspezifisches Problem. Es funktioniert nicht auf MacOS 10.7 mit integriertem Python 2.7. –

+0

Ich schätze, Sie haben nie einen Weg gefunden, um Mac OS X zu benutzen? – jgritty

Antwort

8

Sie haben die cProfiler im Konstruktor des Tests zu initialisieren, und die Profildaten in destructor verwenden - ich benutze es wie folgt aus:

from pstats import Stats 
import unittest 

class TestSplayTree(unittest.TestCase): 
    """a simple test""" 

def setUp(self): 
    """init each test""" 
    self.testtree = SplayTree (1000000) 
    self.pr = cProfile.Profile() 
    self.pr.enable() 
    print "\n<<<---" 

def tearDown(self): 
    """finish any test""" 
    p = Stats (self.pr) 
    p.strip_dirs() 
    p.sort_stats ('cumtime') 
    p.print_stats() 
    print "\n--->>>" 
def xtest1 (self): 
    pass 

Im Falle, dass ein Test wartet Eingabe, muss man vor diesem Aufruf self.pr.disable() aufrufen und danach wieder aktivieren.

+0

Funktionierte immer noch nicht für mich, wenn ich Flaschentest-Clients verwenden wollte. –

+2

FYI, die Stats Klasse ist verfügbar über 'from pstats import Stats ' –

+0

Ist' self.testtree = SplayTree (1000000) 'essentiell hier? – industryworker3595112