gpt4 book ai didi

Python Mocking - 如何修补函数内的变量

转载 作者:行者123 更新时间:2023-12-05 08:11:43 24 4
gpt4 key购买 nike

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

脚本文件

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

测试脚本.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”,这段代码将无限循环。无论如何,我可以修补它或某种解决方法吗?

最佳答案

古怪的修复,但我通过将变量转换为函数来让它工作。

关于Python Mocking - 如何修补函数内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53213678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com