在 python 上模拟全局变量不起作用

inc*_*ito 5 python mocking

我正在尝试使用模拟引擎模拟全局变量,但它似乎不仅仅适用于我的变量。例如os.name,当我打补丁时,它工作得很好,但是对于我的自定义变量,它不起作用。这是代码:

global_var.py

var = 10
Run Code Online (Sandbox Code Playgroud)

use_global_var.py

from global_var import var


def test_call():
    return var
Run Code Online (Sandbox Code Playgroud)

测试文件

import mock

from use_global_var import test_call


@mock.patch('global_var.var', 50)
def test_check():
    print(test_call())

test_check()
Run Code Online (Sandbox Code Playgroud)

print 如果我理解正确,应该返回 50,但它返回 10。有谁知道这里的问题是什么以及如何解决它?

che*_*ner 8

你不是在嘲笑正确的名字use_global_var.test_call正在看名字use_global_var.var,但你在嘲笑global_var.var

@mock.patch('use_global_var.var', 50)
def test_check():
    print(test_call())

test_check()
Run Code Online (Sandbox Code Playgroud)