正在将 python 测试 运行 信息导入 sonarqube
Importing python test run information into sonarqube
我有一个结构如下的 python 项目,我正在尝试将其导入 SonarQube:
root
sonar-project.properties
src
test
nosetests.xml
所有测试文件都在测试文件夹中。
nosetests.xml 是 xml 使用 nose(tests) (1.3.7) 生成的报告。
我的声纳-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 中使用并重复使用。我不想编辑报告,我正在寻找一种方法来正确生成它们或按原样导入它们。
这似乎最好在 nosetest 级别解决,即让 nosetests.xml 报告完全合格的路径。这将使 SonarPython(以及可能的其他工具)正确地进行匹配。
简单的方法:在 test 下添加一个空 __init__.py
并重新运行测试。这将使 test 成为类路径的一部分,并且 nosetests.xml 应该报告 test.unitests.testcase
.
我有一个结构如下的 python 项目,我正在尝试将其导入 SonarQube:
root
sonar-project.properties
src
test
nosetests.xml
所有测试文件都在测试文件夹中。 nosetests.xml 是 xml 使用 nose(tests) (1.3.7) 生成的报告。
我的声纳-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 中使用并重复使用。我不想编辑报告,我正在寻找一种方法来正确生成它们或按原样导入它们。
这似乎最好在 nosetest 级别解决,即让 nosetests.xml 报告完全合格的路径。这将使 SonarPython(以及可能的其他工具)正确地进行匹配。
简单的方法:在 test 下添加一个空 __init__.py
并重新运行测试。这将使 test 成为类路径的一部分,并且 nosetests.xml 应该报告 test.unitests.testcase
.