# Module `Gnumed.wxpython.gmGuiTest`

GNUmed GUI widget testing framework.

## Functions

`def setup_widget_test_env(patient=-1)`
  Expand source code

      def setup_widget_test_env(patient=-1):
              """Setup widget test environment.

              - connect to DB
              - setup praxis branch
              - setup active patient, asking for patient if not given
              - setup wx app
              - setup wx frame as topwindow

              Does *not* run app.MainLoop(). You will have to do that
              yourself like so:

              main_frame = setup_widget_test_env(...)
              my_widget = cWidgetClass(main_frame, ...)
              my_widget.whatever_else_is_necessary(...)
              wx.GetApp().MainLoop()

              Returns:
                      main frame, which can be used to instantiate widgets
              """
              gmPG2.request_login_params(setup_pool = True, force_tui = True)
              if not __activate_patient(patient = patient):
                      sys.exit()
              gmPraxis.gmCurrentPraxisBranch.from_first_branch()
              gmStaff.set_current_provider_to_logged_on_user()

              app = inspection.InspectableApp()
              app.SetAssertMode(wx.APP_ASSERT_EXCEPTION | wx.APP_ASSERT_LOG)
              app.InitInspection()
              frame = wx.Frame(None, id = -1, title = _('GNUmed widget test'), size = (800, 600))
              frame.CentreOnScreen(wx.BOTH)
              app.SetTopWindow(frame)
              frame.Show(True)
              app.ShowInspectionTool()
              return frame

  Setup widget test environment.

  - connect to DB
  - setup praxis branch
  - setup active patient, asking for patient if not given
  - setup wx app
  - setup wx frame as topwindow

  Does not run app.MainLoop(). You will have to do that yourself like so:

  main_frame = setup_widget_test_env(…) my_widget = cWidgetClass(main_frame, …) my_widget.whatever_else_is_necessary(…) wx.GetApp().MainLoop()

  ## Returns

  main frame, which can be used to instantiate widgets

`def test_widget(widget_class,
*widget_args,
patient: int = -1,
size=None,
setup_db: bool = True,
**widget_kwargs)`
  Expand source code

      def test_widget(widget_class, *widget_args, patient:int=-1, size=None, setup_db:bool=True, **widget_kwargs):
              if setup_db:
                      gmPG2.request_login_params(setup_pool = True, force_tui = True)
              gmPraxis.gmCurrentPraxisBranch.from_first_branch()
              if not __activate_patient(patient = patient):
                      sys.exit()

              app = inspection.InspectableApp()
              app.SetAssertMode(wx.APP_ASSERT_EXCEPTION | wx.APP_ASSERT_LOG)
              app.InitInspection()
              if size is None:
                      size = (800, 600)
              frame = wx.Frame(None, id = -1, title = _('GNUmed widget test: %s') % widget_class, size = size)
              frame.CentreOnScreen(wx.BOTH)
              app.SetTopWindow(frame)
              widget = widget_class(frame, *widget_args, **widget_kwargs)
              frame.Show(True)
              app.ShowInspectionTool()
              try:
                      app.MainLoop()
              except Exception:
                      gmLog2.log_stack_trace(message = 'test failure')
              return widget