Coverage for tests/guitestcase.py: 93%
28 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-03-20 05:56 +0000
« prev ^ index » next coverage.py v7.4.4, created at 2024-03-20 05:56 +0000
1import unittest
3import wx
6class GUITestCase(unittest.TestCase):
7 """Base class for GUI tests that sets up an app and a frame.
9 @see: https://github.com/wxWidgets/Phoenix/blob/master/unittests/wtc.py
10 """
12 def setUp(self):
13 self.app = wx.App()
14 wx.Log.SetActiveTarget(wx.LogStderr())
15 self.frame = wx.Frame(None)
16 self.frame.Show()
17 self.frame.PostSizeEvent()
19 def tearDown(self):
20 def _cleanup():
21 for w in wx.GetTopLevelWindows(): # type: ignore
22 if w:
23 if isinstance(w, wx.Dialog) and w.IsModal():
24 w.EndModal(wx.ID_CANCEL)
25 wx.CallAfter(w.Destroy)
26 else:
27 w.Close(force=True)
28 wx.WakeUpIdle()
30 timer = wx.PyTimer(_cleanup)
31 timer.Start(100)
32 self.app.MainLoop()
33 del self.app
35 def add_to_frame(self, widget):
36 sizer = wx.BoxSizer(wx.HORIZONTAL)
37 sizer.Add(widget, 1, wx.EXPAND)
38 sizer.ShowItems(True)
40 self.frame.SetSizer(sizer)
41 self.frame.Layout()