class TestReadMultipleSheets: def setUp(self): self.file_type = "csv" self.test_file_formatter = "csv_multiple__%s__%s." + self.file_type self.data = [ ["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"] ] self.sheets = OrderedDict() self.sheets.update({"sheet1": self.data}) self.sheets.update({"sheet2": self.data}) self.sheets.update({"sheet3": self.data}) index = 0 for key, value in self.sheets.items(): file_name = self.test_file_formatter % (key, index) with open(file_name, 'w') as f: for row in value: f.write(",".join(row) + "\n") index = index + 1 def test_multiple_sheet(self): b = CSVBook("csv_multiple.csv") sheets = b.sheets() assert sheets == self.sheets def test_read_one_from_many_by_name(self): b = CSVBook("csv_multiple.csv", load_sheet_with_name="sheet1") sheets = b.sheets() assert sheets["sheet1"] == self.sheets["sheet1"] @raises(ValueError) def test_read_one_from_many_by_non_existent_name(self): CSVBook("csv_multiple.csv", load_sheet_with_name="notknown") def test_read_one_from_many_by_index(self): b = CSVBook("csv_multiple.csv", load_sheet_at_index=1) sheets = b.sheets() assert sheets["sheet2"] == self.sheets["sheet2"] @raises(IndexError) def test_read_one_from_many_by_wrong_index(self): CSVBook("csv_multiple.csv", load_sheet_at_index=90) def tearDown(self): index = 0 for key, value in self.sheets.items(): file_name = self.test_file_formatter % (key, index) os.unlink(file_name) index = index + 1
class TestWriteMultipleSheets: def setUp(self): self.file_type = "csv" self.test_file_formatter = "csv_multiple__%s__%s." + self.file_type self.data1 = [ ["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"] ] self.data2 = [ ["1", "2", "3"], ["4", "5", "6"], ["7", "8", "1000"] ] self.data3 = [ ["1", "2", "3"], ["4", "5", "6888"], ["7", "8", "9"] ] self.sheets = OrderedDict() self.sheets.update({"sheet1": self.data1}) self.sheets.update({"sheet2": self.data2}) self.sheets.update({"sheet3": self.data3}) self.result_dict = OrderedDict() self.result1 = dedent(""" 1,2,3 4,5,6 7,8,9 """).strip('\n') self.result2 = dedent(""" 1,2,3 4,5,6 7,8,1000 """).strip('\n') self.result3 = dedent(""" 1,2,3 4,5,6888 7,8,9 """).strip('\n') self.result_dict.update({"sheet1": self.result1}) self.result_dict.update({"sheet2": self.result2}) self.result_dict.update({"sheet3": self.result3}) def test_multiple_sheet(self): """Write csv book into multiple file""" b = CSVWriter("csv_multiple.csv") for key, value in self.sheets.items(): w = b.create_sheet(key) w.write_array(value) w.close() b.close() index = 0 for key, value in self.sheets.items(): file_name = self.test_file_formatter % (key, index) with open(file_name, 'r') as f: content = f.read().replace('\r', '') assert content.strip('\n') == self.result_dict[key] index = index + 1 #def test_multiple_sheet_into_memory(self): # """Write csv book into a single stream""" # io = get_io(self.file_type) # b = CSVWriter(io) # for key, value in self.sheets.items(): # w = b.create_sheet(key) # w.write_array(value) # w.close() # b.close() # content = io.getvalue() # index = 0 # for key, value in self.content.split('---pyexcel---\r\n'): # file_name = self.test_file_formatter % (key, index) # with open(file_name, 'r') as f: # content = f.read().replace('\r', '') # assert content.strip('\n') == self.result_dict[key] # index = index + 1 def tearDown(self): index = 0 for key, value in self.sheets.items(): file_name = self.test_file_formatter % (key, index) os.unlink(file_name) index = index + 1