Test improvements

- Use standard test font, larger font size to minimize cross platform
rendering differences
- Create a local test report for debugging
This commit is contained in:
Nyall Dawson 2019-03-26 13:55:15 +10:00
parent c282e95d1c
commit e5b87474d4
10 changed files with 67 additions and 14 deletions

View File

@ -28,7 +28,7 @@ import qgis # NOQA
import os import os
from qgis.PyQt.QtGui import QColor from qgis.PyQt.QtGui import QColor
from qgis.PyQt.QtCore import QSize, QThreadPool from qgis.PyQt.QtCore import QSize, QThreadPool, QDir
from qgis.PyQt.QtXml import QDomDocument from qgis.PyQt.QtXml import QDomDocument
from qgis.core import (QgsVectorLayer, from qgis.core import (QgsVectorLayer,
@ -60,6 +60,14 @@ TEST_DATA_DIR = unitTestDataPath()
class TestQgsPointDisplacementRenderer(unittest.TestCase): class TestQgsPointDisplacementRenderer(unittest.TestCase):
def setUp(self):
self.report = "<h1>Python QgsPointDisplacementRenderer Tests</h1>\n"
def tearDown(self):
report_file_path = "%s/qgistest.html" % QDir.tempPath()
with open(report_file_path, 'a') as report_file:
report_file.write(self.report)
def _setUp(self): def _setUp(self):
myShpFile = os.path.join(TEST_DATA_DIR, 'points.shp') myShpFile = os.path.join(TEST_DATA_DIR, 'points.shp')
layer = QgsVectorLayer(myShpFile, 'Points', 'ogr') layer = QgsVectorLayer(myShpFile, 'Points', 'ogr')
@ -200,7 +208,9 @@ class TestQgsPointDisplacementRenderer(unittest.TestCase):
renderchecker.setMapSettings(mapsettings) renderchecker.setMapSettings(mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer') renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_no_cluster') renderchecker.setControlName('expected_displacement_no_cluster')
self.assertTrue(renderchecker.runTest('displacement_no_cluster')) res = renderchecker.runTest('displacement_no_cluster')
self.report += renderchecker.report()
self.assertTrue(res)
self._tearDown(layer) self._tearDown(layer)
def testRenderWithin(self): def testRenderWithin(self):
@ -210,7 +220,9 @@ class TestQgsPointDisplacementRenderer(unittest.TestCase):
renderchecker.setMapSettings(mapsettings) renderchecker.setMapSettings(mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer') renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster') renderchecker.setControlName('expected_displacement_cluster')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster')) res = renderchecker.runTest('expected_displacement_cluster')
self.report += renderchecker.report()
self.assertTrue(res)
self._tearDown(layer) self._tearDown(layer)
def testRenderVariables(self): def testRenderVariables(self):
@ -229,6 +241,7 @@ class TestQgsPointDisplacementRenderer(unittest.TestCase):
renderchecker.setControlPathPrefix('displacement_renderer') renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_variables') renderchecker.setControlName('expected_displacement_variables')
result = renderchecker.runTest('expected_displacement_variables') result = renderchecker.runTest('expected_displacement_variables')
self.report += renderchecker.report()
layer.renderer().setCenterSymbol(old_marker) layer.renderer().setCenterSymbol(old_marker)
self.assertTrue(result) self.assertTrue(result)
self._tearDown(layer) self._tearDown(layer)
@ -241,7 +254,9 @@ class TestQgsPointDisplacementRenderer(unittest.TestCase):
renderchecker.setMapSettings(mapsettings) renderchecker.setMapSettings(mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer') renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_grid') renderchecker.setControlName('expected_displacement_grid')
self.assertTrue(renderchecker.runTest('expected_displacement_grid')) res = renderchecker.runTest('expected_displacement_grid')
self.report += renderchecker.report()
self.assertTrue(res)
self._tearDown(layer) self._tearDown(layer)
def testRenderGridAdjust(self): def testRenderGridAdjust(self):
@ -254,7 +269,9 @@ class TestQgsPointDisplacementRenderer(unittest.TestCase):
renderchecker.setMapSettings(mapsettings) renderchecker.setMapSettings(mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer') renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_adjust_grid') renderchecker.setControlName('expected_displacement_adjust_grid')
self.assertTrue(renderchecker.runTest('expected_displacement_adjust_grid')) res = renderchecker.runTest('expected_displacement_adjust_grid')
self.report += renderchecker.report()
self.assertTrue(res)
self._tearDown(layer) self._tearDown(layer)
def testClusterRingLabels(self): def testClusterRingLabels(self):
@ -262,11 +279,15 @@ class TestQgsPointDisplacementRenderer(unittest.TestCase):
layer.renderer().setTolerance(10) layer.renderer().setTolerance(10)
layer.renderer().setLabelAttributeName('Class') layer.renderer().setLabelAttributeName('Class')
layer.renderer().setLabelDistanceFactor(0.35) layer.renderer().setLabelDistanceFactor(0.35)
f = QgsFontUtils.getStandardTestFont('Bold', 14)
layer.renderer().setLabelFont(f)
renderchecker = QgsMultiRenderChecker() renderchecker = QgsMultiRenderChecker()
renderchecker.setMapSettings(mapsettings) renderchecker.setMapSettings(mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer') renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster_ring_labels') renderchecker.setControlName('expected_displacement_cluster_ring_labels')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_ring_labels')) res = renderchecker.runTest('expected_displacement_cluster_ring_labels')
self.report += renderchecker.report()
self.assertTrue(res)
self._tearDown(layer) self._tearDown(layer)
def testClusterGridLabels(self): def testClusterGridLabels(self):
@ -274,12 +295,16 @@ class TestQgsPointDisplacementRenderer(unittest.TestCase):
layer.renderer().setTolerance(10) layer.renderer().setTolerance(10)
layer.renderer().setLabelAttributeName('Class') layer.renderer().setLabelAttributeName('Class')
layer.renderer().setLabelDistanceFactor(0.35) layer.renderer().setLabelDistanceFactor(0.35)
f = QgsFontUtils.getStandardTestFont('Bold', 14)
layer.renderer().setLabelFont(f)
layer.renderer().setPlacement(QgsPointDisplacementRenderer.Grid) layer.renderer().setPlacement(QgsPointDisplacementRenderer.Grid)
renderchecker = QgsMultiRenderChecker() renderchecker = QgsMultiRenderChecker()
renderchecker.setMapSettings(mapsettings) renderchecker.setMapSettings(mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer') renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster_grid_labels') renderchecker.setControlName('expected_displacement_cluster_grid_labels')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_grid_labels')) res = renderchecker.runTest('expected_displacement_cluster_grid_labels')
self.report += renderchecker.report()
self.assertTrue(res)
self._tearDown(layer) self._tearDown(layer)
def testClusterConcentricLabels(self): def testClusterConcentricLabels(self):
@ -287,12 +312,16 @@ class TestQgsPointDisplacementRenderer(unittest.TestCase):
layer.renderer().setTolerance(10) layer.renderer().setTolerance(10)
layer.renderer().setLabelAttributeName('Class') layer.renderer().setLabelAttributeName('Class')
layer.renderer().setLabelDistanceFactor(0.35) layer.renderer().setLabelDistanceFactor(0.35)
f = QgsFontUtils.getStandardTestFont('Bold', 14)
layer.renderer().setLabelFont(f)
layer.renderer().setPlacement(QgsPointDisplacementRenderer.ConcentricRings) layer.renderer().setPlacement(QgsPointDisplacementRenderer.ConcentricRings)
renderchecker = QgsMultiRenderChecker() renderchecker = QgsMultiRenderChecker()
renderchecker.setMapSettings(mapsettings) renderchecker.setMapSettings(mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer') renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster_concentric_labels') renderchecker.setControlName('expected_displacement_cluster_concentric_labels')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_concentric_labels')) res = renderchecker.runTest('expected_displacement_cluster_concentric_labels')
self.report += renderchecker.report()
self.assertTrue(res)
self._tearDown(layer) self._tearDown(layer)
def testClusterRingLabelsDifferentSizes(self): def testClusterRingLabelsDifferentSizes(self):
@ -301,11 +330,15 @@ class TestQgsPointDisplacementRenderer(unittest.TestCase):
layer.renderer().setTolerance(10) layer.renderer().setTolerance(10)
layer.renderer().setLabelAttributeName('Class') layer.renderer().setLabelAttributeName('Class')
layer.renderer().setLabelDistanceFactor(0.35) layer.renderer().setLabelDistanceFactor(0.35)
f = QgsFontUtils.getStandardTestFont('Bold', 14)
layer.renderer().setLabelFont(f)
renderchecker = QgsMultiRenderChecker() renderchecker = QgsMultiRenderChecker()
renderchecker.setMapSettings(mapsettings) renderchecker.setMapSettings(mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer') renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster_ring_labels_diff_size') renderchecker.setControlName('expected_displacement_cluster_ring_labels_diff_size')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_ring_labels_diff_size')) res = renderchecker.runTest('expected_displacement_cluster_ring_labels_diff_size')
self.report += renderchecker.report()
self.assertTrue(res)
self._tearDown(layer) self._tearDown(layer)
def testClusterGridLabelsDifferentSizes(self): def testClusterGridLabelsDifferentSizes(self):
@ -314,12 +347,16 @@ class TestQgsPointDisplacementRenderer(unittest.TestCase):
layer.renderer().setTolerance(10) layer.renderer().setTolerance(10)
layer.renderer().setLabelAttributeName('Class') layer.renderer().setLabelAttributeName('Class')
layer.renderer().setLabelDistanceFactor(0.35) layer.renderer().setLabelDistanceFactor(0.35)
f = QgsFontUtils.getStandardTestFont('Bold', 14)
layer.renderer().setLabelFont(f)
layer.renderer().setPlacement(QgsPointDisplacementRenderer.Grid) layer.renderer().setPlacement(QgsPointDisplacementRenderer.Grid)
renderchecker = QgsMultiRenderChecker() renderchecker = QgsMultiRenderChecker()
renderchecker.setMapSettings(mapsettings) renderchecker.setMapSettings(mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer') renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster_grid_labels_diff_size') renderchecker.setControlName('expected_displacement_cluster_grid_labels_diff_size')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_grid_labels_diff_size')) res = renderchecker.runTest('expected_displacement_cluster_grid_labels_diff_size')
self.report += renderchecker.report()
self.assertTrue(res)
self._tearDown(layer) self._tearDown(layer)
def testClusterConcentricLabelsDifferentSizes(self): def testClusterConcentricLabelsDifferentSizes(self):
@ -328,12 +365,16 @@ class TestQgsPointDisplacementRenderer(unittest.TestCase):
layer.renderer().setTolerance(10) layer.renderer().setTolerance(10)
layer.renderer().setLabelAttributeName('Class') layer.renderer().setLabelAttributeName('Class')
layer.renderer().setLabelDistanceFactor(0.35) layer.renderer().setLabelDistanceFactor(0.35)
f = QgsFontUtils.getStandardTestFont('Bold', 14)
layer.renderer().setLabelFont(f)
layer.renderer().setPlacement(QgsPointDisplacementRenderer.ConcentricRings) layer.renderer().setPlacement(QgsPointDisplacementRenderer.ConcentricRings)
renderchecker = QgsMultiRenderChecker() renderchecker = QgsMultiRenderChecker()
renderchecker.setMapSettings(mapsettings) renderchecker.setMapSettings(mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer') renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster_concentric_labels_diff_size') renderchecker.setControlName('expected_displacement_cluster_concentric_labels_diff_size')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_concentric_labels_diff_size')) res = renderchecker.runTest('expected_displacement_cluster_concentric_labels_diff_size')
self.report += renderchecker.report()
self.assertTrue(res)
self._tearDown(layer) self._tearDown(layer)
def testClusterRingLabelsDifferentSizesFarther(self): def testClusterRingLabelsDifferentSizesFarther(self):
@ -342,11 +383,15 @@ class TestQgsPointDisplacementRenderer(unittest.TestCase):
layer.renderer().setTolerance(10) layer.renderer().setTolerance(10)
layer.renderer().setLabelAttributeName('Class') layer.renderer().setLabelAttributeName('Class')
layer.renderer().setLabelDistanceFactor(1) layer.renderer().setLabelDistanceFactor(1)
f = QgsFontUtils.getStandardTestFont('Bold', 14)
layer.renderer().setLabelFont(f)
renderchecker = QgsMultiRenderChecker() renderchecker = QgsMultiRenderChecker()
renderchecker.setMapSettings(mapsettings) renderchecker.setMapSettings(mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer') renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster_ring_labels_diff_size_farther') renderchecker.setControlName('expected_displacement_cluster_ring_labels_diff_size_farther')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_ring_labels_diff_size_farther')) res = renderchecker.runTest('expected_displacement_cluster_ring_labels_diff_size_farther')
self.report += renderchecker.report()
self.assertTrue(res)
self._tearDown(layer) self._tearDown(layer)
def testClusterGridLabelsDifferentSizesFarther(self): def testClusterGridLabelsDifferentSizesFarther(self):
@ -356,11 +401,15 @@ class TestQgsPointDisplacementRenderer(unittest.TestCase):
layer.renderer().setLabelAttributeName('Class') layer.renderer().setLabelAttributeName('Class')
layer.renderer().setLabelDistanceFactor(1) layer.renderer().setLabelDistanceFactor(1)
layer.renderer().setPlacement(QgsPointDisplacementRenderer.Grid) layer.renderer().setPlacement(QgsPointDisplacementRenderer.Grid)
f = QgsFontUtils.getStandardTestFont('Bold', 14)
layer.renderer().setLabelFont(f)
renderchecker = QgsMultiRenderChecker() renderchecker = QgsMultiRenderChecker()
renderchecker.setMapSettings(mapsettings) renderchecker.setMapSettings(mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer') renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster_grid_labels_diff_size_farther') renderchecker.setControlName('expected_displacement_cluster_grid_labels_diff_size_farther')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_grid_labels_diff_size_farther')) res = renderchecker.runTest('expected_displacement_cluster_grid_labels_diff_size_farther')
self.report += renderchecker.report()
self.assertTrue(res)
self._tearDown(layer) self._tearDown(layer)
def testClusterConcentricLabelsDifferentSizesFarther(self): def testClusterConcentricLabelsDifferentSizesFarther(self):
@ -369,12 +418,16 @@ class TestQgsPointDisplacementRenderer(unittest.TestCase):
layer.renderer().setTolerance(10) layer.renderer().setTolerance(10)
layer.renderer().setLabelAttributeName('Class') layer.renderer().setLabelAttributeName('Class')
layer.renderer().setLabelDistanceFactor(1) layer.renderer().setLabelDistanceFactor(1)
f = QgsFontUtils.getStandardTestFont('Bold', 14)
layer.renderer().setLabelFont(f)
layer.renderer().setPlacement(QgsPointDisplacementRenderer.ConcentricRings) layer.renderer().setPlacement(QgsPointDisplacementRenderer.ConcentricRings)
renderchecker = QgsMultiRenderChecker() renderchecker = QgsMultiRenderChecker()
renderchecker.setMapSettings(mapsettings) renderchecker.setMapSettings(mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer') renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster_concentric_labels_diff_size_farther') renderchecker.setControlName('expected_displacement_cluster_concentric_labels_diff_size_farther')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_concentric_labels_diff_size_farther')) res = renderchecker.runTest('expected_displacement_cluster_concentric_labels_diff_size_farther')
self.report += renderchecker.report()
self.assertTrue(res)
self._tearDown(layer) self._tearDown(layer)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 626 KiB

After

Width:  |  Height:  |  Size: 626 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 626 KiB

After

Width:  |  Height:  |  Size: 626 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 626 KiB

After

Width:  |  Height:  |  Size: 626 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 626 KiB

After

Width:  |  Height:  |  Size: 626 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 626 KiB

After

Width:  |  Height:  |  Size: 626 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 626 KiB

After

Width:  |  Height:  |  Size: 626 KiB