我以下列方式使用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配置为仅报告我自己模块的覆盖范围?
答案 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