Beispiel #1
0
    def test_can_kill_multiple_excel_instances(self):
        pythoncom.CoInitialize()

        # Using DispatchEx specifically here to create multiple instances of Excel open at once
        application1 = win32com.client.DispatchEx("Excel.Application")
        application2 = win32com.client.DispatchEx("Excel.Application")
        application3 = win32com.client.DispatchEx("Excel.Application")

        self.assertEqual("Microsoft Excel", application1.Name)
        self.assertEqual("Microsoft Excel", application2.Name)
        self.assertEqual("Microsoft Excel", application3.Name)

        safexl.kill_all_instances_of_excel()

        with self.assertRaises(pywintypes.com_error):
            app_name = application1.Name
        with self.assertRaises(pywintypes.com_error):
            app_name = application2.Name
        with self.assertRaises(pywintypes.com_error):
            app_name = application3.Name

        del application1
        del application2
        del application3
        pythoncom.CoUninitialize()
Beispiel #2
0
 def test_when_excel_is_open(self):
     pythoncom.CoInitialize()
     application = win32com.client.Dispatch("Excel.Application")
     self.assertTrue(safexl.is_excel_open())
     safexl.kill_all_instances_of_excel(application)
     del application
     pythoncom.CoUninitialize()
Beispiel #3
0
    def test_can_kill_excel_instance(self):
        pythoncom.CoInitialize()
        application = win32com.client.Dispatch("Excel.Application")

        self.assertEqual("Microsoft Excel", application.Name)
        safexl.kill_all_instances_of_excel()
        with self.assertRaises(pywintypes.com_error):
            app_name = application.Name

        del application
        pythoncom.CoUninitialize()
Beispiel #4
0
    def test_that_newly_saved_file_is_picked_up_and_lost_when_closed(self):
        pythoncom.CoInitialize()
        application = win32com.client.Dispatch("Excel.Application")

        wb1 = application.Workbooks.Add()
        with tempfile.TemporaryDirectory() as temp_dir:
            save_filepath = f"{temp_dir}\\temporary.xlsx"
            application.DisplayAlerts = False
            wb1.SaveAs(save_filepath)

            self.assertIn(save_filepath, safexl.toolkit.excel_open_files())
            wb1.Close()
            self.assertNotIn(save_filepath, safexl.toolkit.excel_open_files())

            application.DisplayAlerts = True

        safexl.kill_all_instances_of_excel(application)
        del application
        pythoncom.CoUninitialize()
Beispiel #5
0
    def test_that_results_update_immediately(self):
        safexl.kill_all_instances_of_excel()
        self.assertFalse(safexl.is_excel_open())

        pythoncom.CoInitialize()
        application = win32com.client.Dispatch("Excel.Application")

        # no workbooks have been added yet
        open_files_1 = self.count_tempfiles()
        self.assertEqual(0, open_files_1)

        # 1 workbook added, 1 more .tmp file than before
        wb1 = application.Workbooks.Add()
        open_files_2 = self.count_tempfiles()
        self.assertEqual(1, open_files_2)
        self.assertEqual(open_files_1 + 1, open_files_2)

        # 2 workbooks added, 1 more .tmp file than before
        wb2 = application.Workbooks.Add()
        open_files_3 = self.count_tempfiles()
        self.assertEqual(2, open_files_3)
        self.assertEqual(open_files_2 + 1, open_files_3)

        # 1 workbook removed, 1 less .tmp file than before
        application.DisplayAlerts = False
        wb2.Close(SaveChanges=False)
        application.DisplayAlerts = True
        open_files_4 = self.count_tempfiles()
        self.assertEqual(1, open_files_4)
        self.assertEqual(open_files_3 - 1, open_files_4)

        # 2 workbooks removed, 1 less .tmp file than before, back to beginning
        application.DisplayAlerts = False
        wb1.Close(SaveChanges=False)
        application.DisplayAlerts = True
        open_files_5 = self.count_tempfiles()
        self.assertEqual(0, open_files_5)
        self.assertEqual(open_files_4 - 1, open_files_5)
        self.assertEqual(open_files_5, open_files_1)

        safexl.kill_all_instances_of_excel(application)
        del application
        pythoncom.CoUninitialize()
Beispiel #6
0
 def tearDown(self):
     # want to be sure that we end each app test with a clean slate
     safexl.kill_all_instances_of_excel()
     self.assertFalse(safexl.is_excel_open())
Beispiel #7
0
 def setUp(self):
     safexl.kill_all_instances_of_excel()
     self.assertFalse(safexl.is_excel_open())
Beispiel #8
0
 def test_when_excel_is_not_open(self):
     safexl.kill_all_instances_of_excel()
     self.assertFalse(safexl.is_excel_open())