def test_minimum_needs_calculator(self): """Test behaviour of the minimum needs function.""" dialog = NeedsCalculatorDialog(PARENT) layer = load_test_vector_layer('other', 'minimum_needs.shp') QgsMapLayerRegistry.instance().addMapLayers([layer]) # Set selected layer and displaced field dialog.layer.setLayer(layer) dialog.displaced.setField(u'displaced') # run minimum needs function dialog.accept() # get output layer layer = dialog.result_layer assert layer is not None field_names = [field.name() for field in layer.pendingFields()] for feature in layer.getFeatures(): value = [attribute for attribute in feature.attributes()] actual_attributes = dict(zip(field_names, value)) expected_attributes = { 'displaced': 1000, 'minimum_needs__rice': 2800, 'minimum_needs__drinking_water': 17500, 'minimum_needs__clean_water': 67000, 'minimum_needs__family_kits': 200, 'minimum_needs__toilets': 50} self.assertDictEqual( byteify(expected_attributes), byteify(actual_attributes))
def test_minimum_needs_calculator(self): """Test behaviour of the minimum needs function.""" dialog = NeedsCalculatorDialog(PARENT) layer = load_test_vector_layer('other', 'minimum_needs.shp') QgsProject.instance().addMapLayers([layer]) # Set selected layer and displaced field dialog.layer.setLayer(layer) dialog.displaced.setField('displaced') # run minimum needs function dialog.accept() # get output layer layer = dialog.result_layer assert layer is not None field_names = [field.name() for field in layer.fields()] for feature in layer.getFeatures(): value = [attribute for attribute in feature.attributes()] actual_attributes = dict(list(zip(field_names, value))) expected_attributes = { 'displaced': 1000, 'minimum_needs__rice': 2800, 'minimum_needs__drinking_water': 17500, 'minimum_needs__clean_water': 67000, 'minimum_needs__family_kits': 200, 'minimum_needs__toilets': 50 } self.assertDictEqual(byteify(expected_attributes), byteify(actual_attributes))
def read_json_flow(json_path): """Helper method to read json file that contains a scenario. :param json_path: Path to json file. :type json_path: unicode, str :returns: Tuple of dictionary contains a scenario and expected result. :rtype: (dict, dict, dict) """ with open(json_path) as json_data: data = byteify(json.load(json_data)) return data['scenario'], data['expected_steps'], data['expected_outputs']
def test_scenario(self, scenario_path=None): """Run test single scenario.""" self.maxDiff = None use_debug = True if not scenario_path: scenario_path = standard_data_path( 'scenario', 'polygon_classified_on_line.json') LOGGER.info('Running the scenario : %s' % scenario_path) scenario, expected_steps, expected_outputs = read_json_flow( scenario_path) status, steps, outputs = run_scenario(scenario, use_debug) self.assertEqual(0, status, steps) # self.assertDictEqual(expected_steps, steps, scenario_path) try: self.assertDictEqual(byteify(expected_steps), byteify(steps)) except AssertionError as e: raise AssertionError(e.message + '\nThe file is ' + scenario_path) # - 1 because I added the profiling table, and this table is not # counted in the JSON file. self.assertEqual(len(outputs) - 1, expected_outputs['count'])