首页 > 解决方案 > 使用 python 的模拟补丁测试类不起作用

问题描述

我在使用 unittest 模拟和补丁时遇到了困难。我想测试一个特定的类并更改其中的一些属性。

我认为我有一个路径问题,但不知道如何解决它。

#lib.inventory.py
class Inventory(object):

    def __init__(self):
        self.db = "12"

    def do_stuff(self):
        return "ok"

#test.py
import unittest
from mock import patch
import time
from  lib.inventory import Inventory

#test_case.py
class MyTest(unittest.TestCase):
    @patch('lib.inventory.Inventory')  
    def test_retrieve_project_id(self,mock_inventory):

        print "####################"
        print Inventory
        print mock_inventory
        print "####################"

当我运行这个测试时,我应该看到Inventorymock_inventory对象都指向同一个 MagickMock 对象。但事实并非如此:

####################
<class 'lib.inventory.Inventory'>
<MagicMock name='Inventory' id='140594977874320'>
####################

你能告诉我我做错了什么吗?也许我误解了模拟和补丁的概念?谢谢

标签: pythonunit-testingmockingpatch

解决方案


推荐阅读