gpt4 book ai didi

python - 使用 Python Mock 修补 API

转载 作者:行者123 更新时间:2023-11-28 20:31:27 25 4
gpt4 key购买 nike

这个测试给我带来了不寻常的问题:

我测试的稍微简化的版本:

def test_credit_create_view(self):
""" Can we create cards? """
card_data = {'creditcard_data': 'blah blah blah'}
with patch('apps.users.forms.CustomerAccount.psigate') as psigate:
info = MagicMock()
info.CardInfo.SerialNo = 42
create = MagicMock(return_value=info)
psigate.credit.return_value = create
self.client.post('/make-creditcard-now', card_data)

我试图模拟的调用看起来像这样:

psigate.credit().create().CardInfo.SerialNo

在测试中,该调用仅返回一个 MagicMock 对象。

如果我只查看该调用中的最后三个节点,我会得到正确的结果:

create().CardInfo.SerialNo

返回 42

为什么对“psigate.credit().create().CardInfo.SerialNo”的完整调用不返回 42?

最佳答案

您正在将 psigate.credit 的返回值设置为创建,这意味着 psigate.credit() 是您模拟的“创建”,而不是 psigate.credit().create。如果您改为调用 psigate.credit()(),这将按预期工作。

当您调用 psigate.credit().create() 时,您正在动态创建一个新的 MagicMock 对象,而不是调用您定义的对象。

关于python - 使用 Python Mock 修补 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21886143/

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