def loadData(fileName='', debug = False): ''' Load the data - Should only be called at startup Would be preferable for scale to load this into cache or into DB perhaps MongoDB But for now I will return the list of people as Dictionaries People Objects should also be made into DAOs in my opinion :param fileName: file name to load from sys <default ''> :param debug: flag to show stack traces <default False> ''' lpeople = None try: encodingCode = utils.getEncoding(fileName) with codecs.open(fileName, 'r', encoding=encodingCode) as data: people = csv.DictReader(data) lpeople = [] for person in people: lpeople.append(person) data.close() except: if debug: traceback.print_exc() return lpeople
def test_getEncoding_With_UTF16(self): UTF16CSV = 'testutf16.csv' #code under test response = utils.getEncoding(UTF16CSV) self.assertIsNotNone(response, 'Response is None Failed to find encoding for UTF-16') self.assertEqual(response, 'utf-16' , 'Returned Encoding does not match expected of Plain/Text')
def test_getEncoding_With_PLAIN(self): plainTextCSV = 'test.csv' #code under test response = utils.getEncoding(plainTextCSV) self.assertIsNotNone(response, 'Response is None Failed to find encoding for ascii') self.assertEqual(response, 'ascii' , 'Returned Encoding does not match expected of ascii')
def test_getEncoding_With_UTF8(self): UTF8CSV = 'practical_data.csv' #code under test response = utils.getEncoding(UTF8CSV) self.assertIsNotNone(response, 'Response is None Failed to find encoding for UTF-8') self.assertEqual(response, 'utf-8-sig' , 'Returned Encoding does not match expected of Plain/Text')