如何从 SonarQube 测试覆盖率中排除 `if __name__ == '__main__':` 下的代码

Md *_*lam 6 python sonarqube

我有一个要求,至少需要达到80%的线路覆盖率。我有一些文件,其中大部分代码if __name__ == '__main__':都不需要测试。

我如何指示 SonarQube 从测试覆盖率中排除该部分代码。我已经看到有一些选项可以使用sonar.exclusions和排除文件和模块sonar.coverage.exclusions。排除文件的某些部分对我来说会有很大的帮助。例如,我想if __name__ == '__main__':从 sonarQube 中排除以下块中的所有内容:

#Test Everything inside this method
def do_something():
  # Some code

# Do not test and include the following codes in the SonarQube coverage
if __name__ == '__main__':
  # A lot of codes for running different functions of this module
Run Code Online (Sandbox Code Playgroud)

Md *_*lam 6

我已经找到了问题的解决方案。这就是为什么我要为其他人提供帮助。我们使用pytestcoverage来计算覆盖率报告。SonarQube 刚刚阅读了该报道。为了排除某些行,我们在该行后面添加了以下内联注释:

# pragma: no cover
Run Code Online (Sandbox Code Playgroud)

例如,该行print("Hello World")将从测试覆盖率报告中排除,

if __name__=="__main__":
    print("Hello World") # pragma: no cover
Run Code Online (Sandbox Code Playgroud)