如何使用Django,Jenkins和Sonar获得测试覆盖率?

时间:2013-05-13 08:46:21

标签: python django jenkins code-coverage sonarqube

我正试图通过Sonar获得测试单位的报道。为此,我遵循了以下步骤:

  1. 使用python manage.py jenkins --coverage-html-report=report_coverage
  2. 生成报告
  3. /sonar/sonar-3.5.1/conf/sonar.properties中设置属性:
  4. sonar.dynamicAnalysis=reuseReports sonar.cobertura.reportPath=/var/lib/jenkins/workspace/origami/DEV/SRC/origami/reports/coverage.xml

    当我启动测试时,报告会在正确的位置生成。但是,Sonar没有检测到任何单元测试。 我错过了一步还是一切都错了?

3 个答案:

答案 0 :(得分:2)

我认为问题在于Sonar和Jenkins之间似乎没有联系。用插件制作它会更容易。

安装插件后,您只需在jenkins管理中添加构建步骤。

要查看Sonar中的报道报告,您应该使用“Jenkins Sonar插件”。但是它会强制你创建一个maven项目(和一个pom.xml),当你使用Django(它已经完成maven所做的事情)时,它可能不是你想要的。

我认为你想要的是在某处看到代码覆盖率,也许你应该将它集成到Jenkins而不是Sonar中。为此,您可以使用两个插件,“Jenkins Cobertura Plugin”和“HTML Publisher插件”。

Jenkins Cobertura插件允许您以图形方式查看coverage.xml中的代码覆盖率。您可以看到package,file,classe,line和conditionnal中包含的百分比。您只需在项目管理中将您的coverage.xml链接添加到Jenkins中。更多细节here

HTML Publisher插件]可能通过在html中发布覆盖率报告来查看详细的代码覆盖率。

答案 1 :(得分:0)

在Jenkins上,我发现coverage.xml有相对于运行manage.py jenkins的目录的路径。

在我的情况下,我需要在与Jenkins不同的机器上运行单元测试。为了让Sonar能够使用生成的coverage.xml,我必须从相对于项目的相同位置的文件夹中运行测试,作为Jenkins上的工作区目录。

Say I have the following on Jenkins
/local/jenkins/tmp/workspace/my_build
   + my_project
       + app1
       + app2
Say on test machine I have the following
/local/test
   + my_project
      + app1
      + app2

我在测试机上从/ local / test运行单元测试。然后,coverage.xml具有正确的相对路径,看起来像my_project / app1 / source1.py或my_project / app2 / source2.py

答案 2 :(得分:-1)

我认为问题:

sonar.cobertura.reportPath=/var/lib/jenkins/workspace/origami/DEV/SRC/origami/reports/coverage.xml

阅读本文:link