gpt4 book ai didi

python - 在 Python 中,如何模拟一个 c 扩展类?

转载 作者:行者123 更新时间:2023-11-28 22:55:12 24 4
gpt4 key购买 nike

我正在尝试模拟一个在其中使用 c 扩展类的类函数,如下所示,但我得到 TypeError: can't set attributes of built-in/extension type 'y.cExtensionClass'。code.py 是遗留代码,我真的不想更改它。有什么建议吗?

代码.py:

from x.y import cExtensionClass

class CodeClass():

@staticmethod
def code_function():
cExtensionClass().cExtensionFunc()

测试.py:

import code
from x.y import cExtensionClass

class test(unittest.TestCase):

def test_code_function(self)
with patch.object(cExtensionClass, 'cExtensionFunc') as cExtensionFuncMock:
cExtensionFuncMock.return_value = None
code.CodeClass.code_function()
cExtensionFuncMock.assert_called_with()

谢谢

最佳答案

补丁code.cExtensionClass(不是x.y.cExtensionClass)。执行 import code 而不是 from code cExtensionClass

import unittest

from mock import patch, Mock

import code

class test(unittest.TestCase):
def test_code_function(self):
with patch('code.cExtensionClass') as m:
m.return_value.cExtensionFunc = func = Mock()
code.CodeClass.code_function()
func.assert_called_with()

#@patch('code.cExtensionClass')
#def test_code_function(self, m):
# m.return_value.cExtensionFunc = func = Mock()
# code.CodeClass.code_function()
# func.assert_called_with()

关于python - 在 Python 中,如何模拟一个 c 扩展类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17267587/

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