gpt4 book ai didi

python - 如何在Python中模拟补丁ctypes.WinDLL?

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:32 24 4
gpt4 key购买 nike

我正在尝试编写检查函数参数的单元测试:

def test_my_function():
my_function = mock.patch('mymodule.myclass.myfuction')

我的功能在 mymodule 中如下所示:

from ctypes import POINTER, WinDLL, c_int, cast, pointer, byref

class myclass:
def myfunction():
# some logic

测试失败并显示错误消息:

ImportError: cannot import name WinDLL

所以,我正在尝试模拟补丁 ctypes.WinDLL在我的测试中:

mocker.patch('ctypes.WinDLL')
my_function = mock.patch('mymodule.myclass.myfuction')

出现错误:

AttributeError: <module 'ctypes' from '/usr/lib/python2.7/ctypes/__init__.pyc'> does not have the attribute 'WinDLL

我无法模拟补丁 WinDll,因为 ctypes定义WinDLL如果客户端使用 Windows。我的操作系统是Linux。

这个问题能解决吗?

最佳答案

我自己找到了解决方案。默认情况下,mocker.patch 仅修补定义的属性。可以通过传递参数 create=True 来模拟不存在的属性:

mocker.patch('ctypes.WinDLL', create=True)

关于python - 如何在Python中模拟补丁ctypes.WinDLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43920686/

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