Python模拟-如何修补函数中的变量



我以前从未修补过变量,这可能吗?代码如下:

script.py

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

testrongcript.py

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

如果不修补变量"top_windows",此代码将无限循环。不管怎样,我可以修补它还是某种变通方法?

Quirky修复,但我通过将变量转换为函数来实现它。

最新更新