将python测试运行信息导入sonarqube

问题描述 投票:2回答:1

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

root
    sonar-project.properties
    src
    test
        nosetests.xml

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

我的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/unitests/testcase,如果它在XML报告中有名称test.unitests.testcase,则导入。然而,nosetests将它命名为unitests.testcase,因此它不会被导入。

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

python sonarqube nose sonarqube-scan
1个回答
3
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.