gpt4 book ai didi

python - 在 Python unittest 框架中修改全局变量

转载 作者:IT老高 更新时间:2023-10-28 21:46:05 39 4
gpt4 key购买 nike

我正在使用 Python 进行一系列单元测试,其中一些取决于配置变量的值。这些变量存储在全局 Python 配置文件中,并在其他模块中使用。我想为配置变量的不同值编写单元测试,但还没有找到方法。

我无法重写我正在测试的方法的签名。

这就是我想要实现的目标:

from my_module import my_function_with_global_var

class TestSomething(self.unittest):

def test_first_case(self):
from config import MY_CONFIG_VARIABLE
MY_CONFIG_VARIABLE = True
self.assertEqual(my_function_with_global_var(), "First result")

def test_second_case(self):
from config import MY_CONFIG_VARIABLE
MY_CONFIG_VARIABLE = False
self.assertEqual(my_function_with_global_var(), "Second result")

谢谢。

编辑:使示例代码更加明确。

最佳答案

您可能希望改为模拟这些全局变量。这样做的好处是,一旦你完成,全局变量就会被重置。 Python 附带了一个模拟模块,可让您执行此操作。

unittest.mock.patch用作装饰器:

class TestSomething(self.unittest):

@patch('config.MY_CONFIG_VARIABLE', True)
def test_first_case(self):
self.assertEqual(my_function_with_global_var(), "First result")

您也可以将其用作上下文管理器:

    def test_first_case(self):
with patch('config.MY_CONFIG_VARIABLE', True):
self.assertEqual(my_function_with_global_var(), "First result")

关于python - 在 Python unittest 框架中修改全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6268278/

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