title: Python Mocking - How to patch a variable inside a function
body: <p>I've never patched a variable before, is it even possible? The code is as follows:</p>
  
  <p>script.py </p>
  
  <pre><code>import win32gui
  
  def code():
  """
  Fetch Window handles by name and set the "test" handle to the foreground
  """
  
      open_window = False
      top_windows = []
  
      while open_window == False:
  
          # Iterate through Window handles and add them into the "top_windows" list
          win32gui.EnumWindows(windowEnumerationHandler, top_windows)
  
          # Find "test" handle and set it to the foreground then break loop
          for window in top_windows:
  
              if "test" in window[1]:
                  win32gui.ShowWindow(window[0],5)
                  win32gui.SetForegroundWindow(window[0])
                  open_window = True
                  break
  
              else:     # Keeping looping until "test" handle has loaded and
                  pass  # switch to it in the event it hasn't loaded up yet
  </code></pre>
  
  <p>test_script.py</p>
  
  <pre><code>import code
  
  from unittest.mock import patch
  
  def test_code():
  
    # Question pertains to this line of code. How would I write it? If possible?
    with patch(~~~ patch top_windows and give it a value of [("dummy","test")]
               so code doesn't loop forever ~~~),\
  
         patch('code.win32gui.SetForegroundWindow') as patch_1,\
         patch('code.win32gui.ShowWindow) as patch_2,\
         patch('code.win32gui.EnumWindows)as patch_3:
  
             code()
  
     assert patch_1.call_count == 1
     assert patch_2.call_count == 2
     assert patch_3.call_count == 3
  </code></pre>
  
  <p>Without patching the variable "top_windows", this code will just indefinitely loop. Anyway I can patch it or a workaround of some sort?</p>