2010-11-24 66 views
1

有没有办法在单元测试中用模拟对象替换客户端库(它与远程服务器通信)?图解释什么,我试图做用测试中的模拟替换客户端库?

+---------------+ 
    |  tests  |----{ mock } 
    +---------------+  | 
      |    | 
      v    | 
    +---------------+  | 
    |  model  |  | 
    +---------------+  | 
      |    | 
      v    | 
    +---------------+  | 
    | client-module |<--{replaces} 
    +---------------+ 
      ^
      : 
      : 
      v 
    +---------------+ 
    | service | 
    +---------------+ 

因为测试导入模型,其中进口客户端模块

这里,似乎没有被应用模拟的方式到模型的内部。

回答

1

如果model.py做一个

import client_module 

,并在导入时不使用它的任何功能,你可以做

import model 

... 

model.client_module = MyMockModule() 

其中对于东西真正client_moduleMyMockModule返回适合嘲笑提供。我还没有安装/拆卸的东西来照顾这一点,但希望你的想法,

如果model并从client_module使用的东西在导入时,你需要用嘲笑模块更换sys.modules['client_module']在导入之前model