1 votes

Ignorer les modules autres que le sien dans les rapports de couverture de testoob

J'utilise testoob de la manière suivante :

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 ensuite lancer la suite unittest avec ce qui suit :

python my_unittest.py --coverage=normal

Cependant, cela imprimera également les chiffres de couverture de code de tous les modules dont dépendent mon module et unittest, ce qui ne m'intéresse pas du tout. Comment puis-je configurer testoob pour qu'il ne rapporte que la couverture de mon propre module ?

0voto

wich Points 7276

J'ai fini par remplacer l'option privée _should_cover_frame dans le testoob Coverage et en comparant le chemin du fichier du cadre à mon module. Ce n'est pas la solution la plus agréable, mais au moins elle 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X