代码之家  ›  专栏  ›  技术社区  ›  wich

忽略testoob覆盖率报告中除自己之外的模块

  •  1
  • wich  · 技术社区  · 15 年前

    我使用testoob的方式如下:

    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")
    

    然后使用以下命令运行UnitTest套件:

    python my_unittest.py --coverage=normal
    

    不过,这也将打印我的模块和UnitTest所依赖的所有模块的代码覆盖率数据,而我对此完全不感兴趣。如何将testoob配置为只报告我自己模块的覆盖率?

    1 回复  |  直到 12 年前
        1
  •  0
  •   wich    12 年前

    我最终凌驾于私人 _should_cover_frame 功能在 testoob Coverage 类,并将帧的文件路径与我的模块进行比较。不是最好的解决方案,但至少能奏效。

    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