python - 使用 @patch 注释时模块没有被嘲笑
问题描述
这是我的项目目录结构
project
|
|---------src
| |---------__init__.py
| |---------main.py
| |---------tools
| |------__init__.py
| |------tool_a
|
|
|--------tests
|
|---------__init__.py
|---------test_fun.py
这是我正在尝试编写的一个简单测试,但它似乎无法使用 @patch 注释进行模拟
#main.py
import os
import sys
sys.path.insert(1, os.path.join(sys.path[0], '..'))
from src.tools.tool_a import fun
def main_fun():
return fun()
#tool_a.py
def fun():
return 10
#test_fun.py
import os
import sys
from unittest.mock import patch
from src.main import main_fun
@patch('src.tools.tool_a.fun')
def test_main_fun(mock_fun):
mock_fun.return_value = 1
assert 1 == main_fun()
mock_fun.assert_called()
我认为这是目录的结构方式,因为如果我两者都tool_a.py
在main.py
同一个目录中,那么测试可以工作,但在这个设置中似乎不起作用。
解决方案
推荐阅读
- r - 计算二进制变量的特定值并仅返回计数,最好使用 dplyr
- vba - 如何在 ms 访问中将值从一种形式传递到另一种形式
- ios - React Native,性能问题 - iPhone 7 plus 和 iPhone 8 plus
- mercurial - 抑制来自 kdiff3 的不必要的对话框?
- excel - 有没有办法根据工作表中的数据验证列表值创建 IF 语句?
- elasticsearch - 带过滤器的布尔查询不返回任何文档
- c# - 修复 COM 组件 Active DS 的警告
- accessibility - JAWS 在信息消息的末尾添加“类型和文本”
- c# - .Net Web 应用程序无法在服务器上生成 Excel 工作簿,在本地完美运行
- sql - SQL - 可能是 LAG 函数,需要语法调整