在python中模拟全局变量

2024-07-05 12:25:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我在主模块中有一个函数,它接受两个值并对其执行操作他们。这个使用在调用此函数之前创建的全局变量

def calc(keys,values):
    if globalvar == "calc":
        return sum(keys)
    else:
        return sum(values)

现在在单元测试中

^{pr2}$

我收到一个类型错误,参数无效。在

TypeError('test_unit() takes exactly 2 arguments (1 given)',)

有人能告诉我嘲弄全局变量的正确方法吗

更新: 这对我有用不知道为什么

class Testcalc(TestCase):
@mock.patch('module.globalvar')
def test_unit(self,var):
    keys=[1,2,3]
    values=[4,5,6]
    var="calc"
    sum=module.calc(keys,values)
    """
    check asserts
    """

谢谢大家


Tags: 模块函数testreturnifvardefunit
1条回答
网友
1楼 · 发布于 2024-07-05 12:25:44

A module.globalvar = 'anything' should be enough, no need to mock.patch

def test_calc2(self):
    keys = [1, 2, 3]
    values = [4, 5, 6]

    module.globalvar = "calc"
    sum = module.calc(keys, values)
    self.assertEqual(module.globalvar, 'calc')
    self.assertEqual(sum, 6)

    module.globalvar = 'other'
    sum = module.calc(keys, values)
    self.assertEqual(sum, 15)

This works using PropertyMock

^{pr2}$

This is syntax right, but will fail the test, since the globalvar has to be set by PropertyMock

@mock.patch('module.globalvar')
def test_unit(self, mock_globalvar):

相关问题 更多 >