python - 补丁方法在导入时不起作用
问题描述
我正在尝试模拟模块 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?
解决方案
推荐阅读
- javascript - 这个符号在 ES6 中是什么意思?
- selenium - Selenium Allure NoSuchMethodError
- lua - 在 Lua 中进行函数外的初始工作是一种好习惯吗?
- android - (Android) 无法使用同一 Firebase 项目上的另一个应用程序检索 Firebase 数据
- php - 无法打开流:控制器中的权限被拒绝
- python - ValueError:使用不是符号张量的输入调用了层leaky_re_lu_1。收货类型:
- testing - 有没有办法检测是否从 Rust 的测试中调用代码?
- python - 在 Pandas 的 DataFrame 中为每个索引值添加一个列表
- vb.net - 点击时如何找到存储在 2D 数组中的 Picturebox 的坐标
- operating-system - 信号量使用期间的 CPU 上下文切换会造成死锁吗?