class OperatingRevenueSummaryAssemblerTest(unittest.TestCase): def setUp(self): self.assembler = OperatingRevenueSummaryAssembler() self.file_utils = FileUtils() def tearDown(self): self.assembler = None self.file_utils = None def test_assemble_stock_exchange_market_in_2010(self): # online: http://mops.twse.com.tw/nas/t21/sii/t21sc03_99_9.html path = './stockcat/tests/unit/data/operating_revenue_summary/stock_exchange_market/2010/9.html' param = { 'content' : self.file_utils.read_file(path), 'date' : datetime.date(2010, 9, 30) } dao = self.assembler.assemble(param) actual = dao.get_column_name_list() expected = [u'公司代號', u'公司名稱', u'當月營收', u'上月營收', u'去年當月營收', u'上月比較增減(%)', u'去年同月增減(%)', u'當月累計營收', u'去年累計營收', u'前期比較增減(%)'] self.assertEqual(actual, expected) row_list = dao.get_row_list() self.assertEqual(row_list[0], [u'1101', u'台泥', 1804805, 1861703, 1823433, -3.05, -1.02, 16344206, 15719543, 3.97]) for row in row_list: self.assertEqual(len(row), 10) self.assertEqual(dao.get_stmt_date(), param['date']) self.assertEqual(dao.get_release_date(), datetime.date(2013, 5, 7)) def test_assemble_stock_exchange_market_in_2012(self): # online: http://mops.twse.com.tw/nas/t21/sii/t21sc03_101_1.html path = './stockcat/tests/unit/data/operating_revenue_summary/stock_exchange_market/2012/1.html' param = { 'content' : self.file_utils.read_file(path), 'date' : datetime.date(2012, 1, 31) } dao = self.assembler.assemble(param) actual = dao.get_column_name_list() expected = [u'公司代號', u'公司名稱', u'當月營收', u'上月營收', u'去年當月營收', u'上月比較增減(%)', u'去年同月增減(%)', u'當月累計營收', u'去年累計營收', u'前期比較增減(%)'] self.assertEqual(actual, expected) row_list = dao.get_row_list() self.assertEqual(row_list[0], [u'1101', u'台泥', 1752202, 2072570, 2337946, -15.45, -25.05, 1752202, 2337946, -25.05]) self.assertEqual(row_list[7], [u'1201', u'味全公司', 1115106, 1127058, 1110017, -1.06, 0.45, 1115106, 1110017, 0.45]) self.assertEqual(row_list[-1], [u'912398', u'友佳國際', 420469, 576524, 742870, -27.06, -43.39, 420469, 742870, -43.39]) for row in row_list: self.assertEqual(len(row), 10) self.assertEqual(dao.get_stmt_date(), param['date']) self.assertEqual(dao.get_release_date(), datetime.date(2015, 6, 25)) def test_assemble_stock_exchange_market_in_Feb_2013(self): # online: http://mops.twse.com.tw/nas/t21/sii/t21sc03_102_2.html path = './stockcat/tests/unit/data/operating_revenue_summary/stock_exchange_market/2013/2.html' param = { 'content' : self.file_utils.read_file(path), 'date' : datetime.date(2013, 2, 28) } dao = self.assembler.assemble(param) actual = dao.get_column_name_list() expected = [u'公司代號', u'公司名稱', u'當月營收', u'上月營收', u'去年當月營收', u'上月比較增減(%)', u'去年同月增減(%)', u'當月累計營收', u'去年累計營收', u'前期比較增減(%)'] self.assertEqual(actual, expected) row_list = dao.get_row_list() self.assertEqual(row_list[0], [u'1101', u'台泥', 5540346, 9134465, 7983023, -39.34, -30.59, 14674811, 15108059, -2.86]) self.assertEqual(row_list[-1], [u'912398', u'友佳國際', 245279, 547037, 701056, -55.16, -65.01, 792316, 1121522, -29.35]) for row in row_list: self.assertEqual(len(row), 10) self.assertEqual(dao.get_stmt_date(), param['date']) self.assertEqual(dao.get_release_date(), datetime.date(2015, 6, 25)) def test_assemble_stock_exchange_market_in_2014(self): # online: http://mops.twse.com.tw/nas/t21/sii/t21sc03_103_1.html path = './stockcat/tests/unit/data/operating_revenue_summary/stock_exchange_market/2014/1.html' param = { 'content' : self.file_utils.read_file(path), 'date' : datetime.date(2014, 1, 31) } dao = self.assembler.assemble(param) actual = dao.get_column_name_list() expected = [u'公司代號', u'公司名稱', u'當月營收', u'上月營收', u'去年當月營收', u'上月比較增減(%)', u'去年同月增減(%)', u'當月累計營收', u'去年累計營收', u'前期比較增減(%)'] self.assertEqual(actual, expected) row_list = dao.get_row_list() self.assertEqual(row_list[0], [u'1101', u'台泥', 9801691, 11416657, 9134465, -14.14, 7.30, 9801691, 9134465, 7.30]) for row in row_list: self.assertEqual(len(row), 10) self.assertEqual(dao.get_stmt_date(), param['date']) self.assertEqual(dao.get_release_date(), datetime.date(2015, 2, 1)) def test_assemble_stock_exchange_market_in_2015(self): # online: http://mops.twse.com.tw/nas/t21/sii/t21sc03_104_1.html path = './stockcat/tests/unit/data/operating_revenue_summary/stock_exchange_market/2015/1.html' param = { 'content' : self.file_utils.read_file(path), 'date' : datetime.date(2015, 1, 31) } dao = self.assembler.assemble(param) actual = dao.get_column_name_list() expected = [u'公司代號', u'公司名稱', u'當月營收', u'上月營收', u'去年當月營收', u'上月比較增減(%)', u'去年同月增減(%)', u'當月累計營收', u'去年累計營收', u'前期比較增減(%)'] self.assertEqual(actual, expected) row_list = dao.get_row_list() self.assertEqual(row_list[0], [u'1101', u'台泥', 8921719, 9913147, 9801691, -10.00, -8.97, 8921719, 9801691, -8.97]) for row in row_list: self.assertEqual(len(row), 10) self.assertEqual(dao.get_stmt_date(), param['date']) self.assertEqual(dao.get_release_date(), datetime.date(2015, 8, 16)) def test_assemble_otc_market_in_2010(self): # online: http://mops.twse.com.tw/nas/t21/otc/t21sc03_99_9.html path = './stockcat/tests/unit/data/operating_revenue_summary/otc_market/2010/9.html' param = { 'content' : self.file_utils.read_file(path), 'date' : datetime.date(2010, 9, 30) } dao = self.assembler.assemble(param) actual = dao.get_column_name_list() expected = [u'公司代號', u'公司名稱', u'當月營收', u'上月營收', u'去年當月營收', u'上月比較增減(%)', u'去年同月增減(%)', u'當月累計營收', u'去年累計營收', u'前期比較增減(%)'] self.assertEqual(actual, expected) row_list = dao.get_row_list() self.assertEqual(row_list[0], [u'4205', u'恆義公司', 92492, 112118, 92552, -17.50, -0.06, 871040, 840174, 3.67]) for row in row_list: self.assertEqual(len(row), 10) self.assertEqual(dao.get_stmt_date(), param['date']) self.assertEqual(dao.get_release_date(), datetime.date(2013, 5, 7)) def test_assemble_otc_market_in_2014(self): # online: http://mops.twse.com.tw/nas/t21/otc/t21sc03_103_9.html path = './stockcat/tests/unit/data/operating_revenue_summary/otc_market/2014/9.html' param = { 'content' : self.file_utils.read_file(path), 'date' : datetime.date(2014, 9, 30) } dao = self.assembler.assemble(param) actual = dao.get_column_name_list() expected = [u'公司代號', u'公司名稱', u'當月營收', u'上月營收', u'去年當月營收', u'上月比較增減(%)', u'去年同月增減(%)', u'當月累計營收', u'去年累計營收', u'前期比較增減(%)'] self.assertEqual(actual, expected) row_list = dao.get_row_list() self.assertEqual(row_list[0], [u'1256', u'F-鮮活', 193070, 208084, 181554, -7.21, 6.34, 1660110, 1368966, 21.26]) for row in row_list: self.assertEqual(len(row), 10) self.assertEqual(dao.get_stmt_date(), param['date']) self.assertEqual(dao.get_release_date(), datetime.date(2015, 8, 16)) def test_assemble_otc_market_in_2015(self): # online: http://mops.twse.com.tw/nas/t21/otc/t21sc03_104_1.html path = './stockcat/tests/unit/data/operating_revenue_summary/otc_market/2015/1.html' param = { 'content' : self.file_utils.read_file(path), 'date' : datetime.date(2015, 1, 31) } dao = self.assembler.assemble(param) actual = dao.get_column_name_list() expected = [u'公司代號', u'公司名稱', u'當月營收', u'上月營收', u'去年當月營收', u'上月比較增減(%)', u'去年同月增減(%)', u'當月累計營收', u'去年累計營收', u'前期比較增減(%)'] self.assertEqual(actual, expected) row_list = dao.get_row_list() self.assertEqual(row_list[0], [u'1256', u'F-鮮活', 209686, 148468, 154455, 41.23, 35.75, 209686, 154455, 35.75]) for row in row_list: self.assertEqual(len(row), 10) self.assertEqual(dao.get_stmt_date(), param['date']) self.assertEqual(dao.get_release_date(), datetime.date(2015, 8, 16)) def test_assemble_raise_no_record_assemble_error(self): # online: http://mops.twse.com.tw/nas/t21/sii/t21sc03_105_1.html path = './stockcat/tests/unit/data/error/url_not_found_error.html' param = { 'content' : self.file_utils.read_file(path), 'date' : datetime.date(2016, 1, 31) } with self.assertRaises(NoRecordAssembleError) as context: self.assembler.assemble(param) self.assertEqual(context.exception.param['date'], param['date'])
def setUp(self): self.assembler = OperatingRevenueSummaryAssembler() self.file_utils = FileUtils()