【发布时间】:2015-12-22 13:57:08
【问题描述】:
是否可以在 Python 3.5 中使用 unittest.mock 模拟导入模块的方法?
# file my_function.py
import os
my_function():
# do something with os, e.g call os.listdir
return os.listdir(os.getcwd())
# file test_my_function.py
test_my_function():
os = MagickMock()
os.listdir = MagickMock(side_effect=["a", "b"])
self.assertEqual("a", my_function())
我希望 os.listdir 方法在第一次调用时返回指定的副作用“a”,但在 my_function 内部调用了未修补的 os.listdir。
【问题讨论】:
-
是的,这是可能的,但您必须修补原始版本 - 参见例如docs.python.org/3/library/unittest.mock.html#the-patchers。通常,“如何” 问题不适合 SO。
-
@jonrsharpe 我已阅读元质量页面meta.stackexchange.com/questions/92074/… 并试图改进问题。但是,您能否详细说明这是否更符合质量标准和“如何在 Oracle 中进行 UPSERT(更新或插入表)?”甚至是那里列出的 good 标题的示例。这个问题很准确,与其他人相关,因为在修补和使用绑定到 MagicMock 之间显然有明显的区别,这对我阅读文档来说并不清楚。
-
@NoxMortem 现在你有一个明确的问题,我可以给你一个明确的答案。
标签: python unit-testing mocking