有没有办法用单元测试中的模拟对象替换客户端库(与远程服务器通信)?
这是一个解释我正在尝试做什么的图
+---------------+
| tests |----{ mock }
+---------------+ |
| |
v |
+---------------+ |
| model | |
+---------------+ |
| |
v |
+---------------+ |
| client-module |<--{replaces}
+---------------+
^
:
:
v
+---------------+
| service |
+---------------+
由于测试导入导入客户端模块的模型,似乎没有办法将模拟应用于模型的内部。
答案 0 :(得分:1)
如果model.py执行
import client_module
并且在导入时不使用它的任何功能,你可以
import model
...
model.client_module = MyMockModule()
其中MyMockModule
为真实client_module
提供的内容返回合适的模拟。我没有展示setUp / tearDown的东西来处理这个问题,但希望你能得到这个想法,
如果model
在导入时使用client_module
中的内容,则在导入{{1}之前,您需要将sys.modules['client_module']
替换为模拟模块}。