Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Django、Jenkins和Sonar获得测试覆盖率?_Python_Django_Jenkins_Code Coverage_Sonarqube - Fatal编程技术网

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

Python 如何使用Django、Jenkins和Sonar获得测试覆盖率?,python,django,jenkins,code-coverage,sonarqube,Python,Django,Jenkins,Code Coverage,Sonarqube,我正试图用声纳覆盖测试单元。为此,我采取了以下步骤: 使用python manage.py jenkins--coverage html report=report\u coverage生成报告 在/sonar/sonar-3.5.1/conf/sonar.properties中设置属性: sonar.dynamicAnalysis=重用报告 sonar.cobertura.reportPath=/var/lib/jenkins/workspace/origami/DEV/SRC/origami

我正试图用声纳覆盖测试单元。为此,我采取了以下步骤:

  • 使用python manage.py jenkins--coverage html report=report\u coverage生成报告
  • /sonar/sonar-3.5.1/conf/sonar.properties
    中设置属性:
  • sonar.dynamicAnalysis=重用报告
    sonar.cobertura.reportPath=/var/lib/jenkins/workspace/origami/DEV/SRC/origami/reports/coverage.xml

    当我启动测试时,会在正确的位置生成报告。然而,声纳探测不到单元测试。 我是错过了一步还是一切都错了?

    我认为问题在于:

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

    阅读此文:

    我认为问题在于声纳和詹金斯之间似乎没有任何联系。使用插件将更容易实现

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

    为了在Sonar中查看覆盖率报告,您应该使用“Jenkins Sonar插件”。然而,它将迫使您创建一个maven项目(和一个pom.xml),并且由于您正在使用Django(它已经做了maven所做的事情),它可能不是您想要的

    我想你想看到的是代码覆盖率,也许你应该把它集成到Jenkins中,而不是Sonar中。为此,您可以使用两个插件,“Jenkins Cobertura插件”和“HTML发布者插件”

    Jenkins Cobertura插件将允许您以图形方式查看coverage.xml中的代码覆盖率。您可以看到包、文件、类、行和条件中包含的百分比。您只需在项目管理中将coverage.xml的链接添加到Jenkins中即可。更多细节


    HTML Publisher plugin]通过在HTML中发布覆盖率报告来查看详细的代码覆盖率可能会很有用

    在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 假设我有以下关于詹金斯的消息 /本地/jenkins/tmp/workspace/my_build +我的计划 +附件1 +附件2 在测试机上说我有以下几点 /本地/测试 +我的计划 +附件1 +附件2
    我在测试机器上从/local/test运行单元测试。然后coverage.xml有正确的相对路径,看起来像my_project/app1/source1.py或my_project/app2/source2.py

    路径是正确的。我已经检查了这个链接,它也不起作用。为什么要写绝对路径?因为不用担心路径。你能发布控制台输出吗?这很难看,但我想我别无选择。不管怎样,谢谢你,陌生人。