修补方法在导入时不起作用

时间:2018-08-17 15:45:04

标签: python mocking python-unittest python-unittest.mock

我正在尝试模拟dog.py模块文件的开头。似乎patch方法在导入时不起作用,但在以后的调用中起作用。

test.py

import unittest
from unittest.mock import patch

class TestMethods(unittest.TestCase):
    @patch('dog.Cat')
    def test_1(self, cat_mock):
        from dog import Dog
        dog = Dog("a dog")

dog.py

from cat import Cat

cat = Cat('kitty')
class Dog:

    def __init__(self, name):
        self.name = name

cat.py

class Cat:

    def __init__(self, name):
         pass

当“从狗导入狗”被调用时,猫不是模拟对象,而是真实的类。但是,当调用“ dog = Dog(“ a dog”)“时,Cat是模拟对象。

为什么在导入模块时Cat不是模拟的?

0 个答案:

没有答案