gpt4 book ai didi

python-3.x - 在模块导入期间调用的 python 模拟函数调用

转载 作者:行者123 更新时间:2023-12-04 16:46:09 25 4
gpt4 key购买 nike

我需要对在模块导入期间运行的 python 代码执行模拟

例如我有这样的代码

import configparser

config = configparser.ConfigParser()
config.read('test.ini')
a = float(config['config']['a'])
b = float(config['config']['b'])
c = float(config['config']['c'])

print(a)
print(b)
print(c)

我需要模拟“配置”进行测试
import pytest
import mock

import app

@mock.patch('app.configparser.ConfigParser')
def test_config_mock(config_mock):
config_mock.return_value = {'config': { 'a' : 1 } }

然而,这个测试函数在实际导入后被调用,所以我的 mock 没有任何意义

做这种事情的正确方法是什么?

最佳答案

在这种情况下,您可以做的是修补 config使用 mock.patch.dict 的实例:

# test_coolio.py
import mock
from app.fun import coolio


@mock.patch.dict('app.configparser.config', values={'config': {'a': 15}})
def test_config_mock():
assert coolio() == '15'


# app/fun.py
from app.configparser import config


def coolio():
return config['config']['a']

关于python-3.x - 在模块导入期间调用的 python 模拟函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59521343/

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