2010-01-26 8 views
1

J'utilise testoob de la manière suivante:Ignorant modules autres que le propre de la couverture testoob rapports

def suite(): 
    import unittest 
    return unittest.TestLoader().loadTestsFromNames([ 
     'my_module.my_unittest_class', 
     'my_module.my_other_unittest_class', 
    ]) 

if __name__ == '__main__': 
    import testoob 
    testoob.main(defaultTest="suite") 

Et puis exécutez la unittest suite avec les éléments suivants:

python my_unittest.py --coverage=normal 

Cela affichera cependant aussi le code les chiffres de couverture de tous les modules dont dépend mon module et l'unittest, ce qui ne m'intéresse pas du tout. Comment puis-je configurer testoob pour ne signaler que la couverture de mon propre module?

Répondre

0

J'ai fini par remplacer la fonction privée _should_cover_frame dans la classe testoobCoverage et de comparer le chemin d'accès du fichier à mon module. Pas la meilleure solution, mais au moins cela fonctionne.

from testoob.coverage import Coverage 
orig_should_cover = Coverage._should_cover_frame 
def my_should_cover_frame(self, frame): 
    from os.path import abspath 
    filename = abspath(frame.f_code.co_filename) 
    if filename.find('my_module') == -1: 
     return False 
    else: 
     return orig_should_cover(self, frame) 
Coverage._should_cover_frame = my_should_cover_frame