Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python模拟类实例化和访问私有成员变量_Python_Unit Testing_Mocking - Fatal编程技术网

Python模拟类实例化和访问私有成员变量

Python模拟类实例化和访问私有成员变量,python,unit-testing,mocking,Python,Unit Testing,Mocking,我想在更新成员变量值的类中测试一个方法。然而,类接受的构造函数参数在要测试的方法中不是必需的 class SimpleClass(Database): count = None def intoTwo(self, v): self.count = 2*v 现在我测试方法如下 import unittest import mock class TestSimpleClass(unittest.TestCase): @mock.patch('Simple

我想在更新成员变量值的类中测试一个方法。然而,类接受的构造函数参数在要测试的方法中不是必需的

class SimpleClass(Database):
    count = None

    def intoTwo(self, v):
        self.count = 2*v
现在我测试方法如下

import unittest
import mock

class TestSimpleClass(unittest.TestCase):
    @mock.patch('SimpleClass', autospec=True)
    def test_intoTwo(self, mock_simpleclass):
        mock_instance = mock_simpleclass.return_value
        mock_instance.intoTwo(2)
        self.assertEqual(mock_instance.count,4)
我遇到以下错误:

<NonCallableMagicMock name='SimpleClass().count' id='139921148836112'>


请提出解决方案。我在其他帖子或博客中找不到相关内容。

我不明白你想做什么。您有一个MagicMock实例,并对其调用一个方法。这里没有引用断言中的原始class.mock_instance.count?什么?正如响应所示,这只是一个模拟值本身。为什么您认为它会是4?所以mock_instance.intTwo不会调用实际的intoTwo函数?intoTwo函数设置类内count的值。我不明白你想做什么。您有一个MagicMock实例,并对其调用一个方法。这里没有引用断言中的原始class.mock_instance.count?什么?正如响应所示,这只是一个模拟值本身。为什么您认为它会是4?所以mock_instance.intTwo不会调用实际的intoTwo函数?函数设置类内计数的值。