python - 如何模拟 my_package.__path__?
问题描述
我想测试下面的类,并想知道如何模拟__path__
一个包,以便我可以在if...else...
控制流中测试这两个场景。
# my_module.py
import my_tools
Class First:
def __init__(self):
path = my_tools.__path__[0]
if path.endswith(".zip"):
self.a = 1
else:
self.a = 2
以下是我的项目的文件结构。
.
└── source
├── my_tools
│ └── my_module.py
└── tests
└── test_my_module.py
解决方案
由于__path__
是一个模块属性,它应该被PropertyMock
from模拟unittests.mock
。
# content of test_my_module.py
from unittests.mock import patch, PropertyMock
from tools.my_module import First
Class TestFirst:
@patch("my_tools.my_module.my_tools")
def test_first(self, mock):
type(mock).__path__ = PropertyMock(return_value=["/fake/path.zip"]
my_first = First()
assert my_first.a == 1
推荐阅读
- oauth-2.0 - 使用 OpenID Connect 和 OAuth 管理应用程序访问
- css - 仅在更大的屏幕上使用 CSS Bootstrap 类(卡片)
- javascript - 如何使用 iOS WKWebView 注入 JavaScript 回调来检测 onclick 事件?
- python - 在循环中构建图形时Tensorflow内存泄漏
- c# - 需要用文本文件中每一行的第一个索引填充我的列表框
- arangodb - 在 ArangoDB 中插入或更新文档失败,违反约束
- jquery - 用户点击工作,Jquery点击不工作
- x11 - 从 XDM 登录屏幕隐藏光标
- assembly - 在执行过程中中断指令
- phabricator - 自定义 Phabricator 登录或注册页面