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

时间:2010-01-26 15:04:29

标签: python code-coverage

我以下列方式使用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 个答案:

答案 0 :(得分:0)

我最终覆盖_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