有没有办法将客户端库(与远程服务器通信)替换为单元测试中的模拟对象?
这里有一个图表来解释我正在尝试做的事情
+---------------+
| tests |----{ mock }
+---------------+ |
| |
v |
+---------------+ |
| model | |
+---------------+ |
| |
v |
+---------------+ |
| client-module |<--{replaces}
+---------------+
^
:
:
v
+---------------+
| service |
+---------------+由于测试导入了模型,而模型又导入了客户端模块,因此似乎没有一种方法可以将模拟应用到模型的内部。
发布于 2010-11-24 21:39:40
如果model.py执行了
import client_module并且在导入时不使用它的任何功能,您可以这样做
import model
...
model.client_module = MyMockModule()其中MyMockModule为真正的client_module提供的东西返回合适的mock。我还没有展示设置/拆卸的东西来解决这个问题,但希望你能理解,
如果model在导入时确实使用了来自client_module的东西,那么在导入model之前,您需要用模拟模块替换sys.modules['client_module']。
https://stackoverflow.com/questions/4267007
复制相似问题