【问题标题】:Importing python test run information into sonarqube将 python 测试运行信息导入 sonarqube
【发布时间】:2018-01-30 11:11:33
【问题描述】:

我有一个类似这样结构的 python 项目,我正在尝试将其导入 SonarQube:

root
    sonar-project.properties
    src
    test
        nosetests.xml

所有测试文件都在测试文件夹中。 nosetests.xml 是使用 nose(tests) (1.3.7) 生成的 xml 报告。

我的 sonar-scanner.properties 文件如下所示

sonar.projectKey=python-sonar
sonar.projectName=python-sonar
sonar.projectVersion=1.0
sonar.sources=src
sonar.tests=test
sonar.language=py
sonar.sourceEncoding=UTF-8
#I want the details so this is false.
sonar.python.xunit.skipDetails=false
sonar.python.xunit.reportPath=test/nosetests.xml
sonar.python.coverage.itReportPath=test/cover.xml

当尝试将项目导入 SonarQube 时,我收到所有测试的以下错误,并且没有测试信息导入 SonarQube。

WARN: The resource for 'unittests.testcase' is not found, drilling down to the details of this test won't be possible.

深入细节我发现问题在于 PythonXUnitSensor 在反映测试用例名称的路径上查找测试文件。例如 test 位于路径 test/unitests/testcase ,如果它在 XML 报告中具有名称 test.unitests.testcase ,则将其导入。然而,nosetests 将其命名为 unitests.testcase,因此它不会被导入。

我正在寻找一种干净的方法来解决这个问题,以便它可以在 CI 中使用并重复使用。我不想编辑报告,我正在寻找一种方法来正确生成它们或按原样导入它们。

【问题讨论】:

    标签: python sonarqube nose sonarqube-scan


    【解决方案1】:

    这似乎最好在 nosetest 级别解决,即让 nosetests.xml 报告完全限定的路径。这将使 SonarPython(以及可能的其他工具)正确地进行匹配。

    简单的方法:在 test 下添加一个空的__init__.py 并重新运行您的测试。这将使 test 成为类路径的一部分,并且 nosetests.xml 应该在 test.unitests.testcase 上报告。

    【讨论】:

    • 谢谢先生。像魅力一样工作。
    • Python 传感器不检查 sonar.tests 目录下的测试是否有原因?
    猜你喜欢
    • 2018-09-07
    • 2018-04-03
    • 1970-01-01
    • 2015-09-30
    • 2016-07-17
    • 2018-04-06
    • 2011-06-13
    • 1970-01-01
    • 2021-03-03
    相关资源
    最近更新 更多