我正在尝试模拟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不是模拟的?