1

有没有办法用单元测试中的模拟对象替换客户端库(与远程服务器通信)?

这是一个图表来解释我正在尝试做的事情

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

由于测试导入了导入客户端模块的模型,因此似乎没有办法将模拟应用于模型的内部。

4

1 回答 1

1

如果 model.py 做了一个

import client_module

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

import model

...

model.client_module = MyMockModule()

where为真实提供MyMockModule的东西返回合适的模拟。client_module我没有展示 setUp/tearDown 的东西来解决这个问题,但希望你能明白,

如果model 确实在导入时使用了东西,则client_module需要在导入之前替换sys.modules['client_module']为模拟模块model

于 2010-11-24T13:39:39.770 回答