我正在尝试模拟模块 dog.py 文件的开头。补丁方法似乎在导入时不起作用,但在以后的调用中起作用。
测试.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")
狗.py
from cat import Cat
cat = Cat('kitty')
class Dog:
def __init__(self, name):
self.name = name
猫.py
class Cat:
def __init__(self, name):
pass
当调用“from dog import Dog”时,Cat 不是模拟类而是真正的类。但是,当调用“dog = Dog("a dog")”时,Cat 就是模拟对象。
为什么导入模块时 Cat 不是 mock?