模拟类中的类实例

时间:2014-04-21 14:29:10

标签: python class unit-testing testing mocking

我正在为我制作的wsgi服务器编写测试。 __init__构造函数中的服务器类将其他类的2个实例作为成员。让我们说

def __init__(self):
  self.a = A()
  self.b = B()

在测试期间,我如何模拟self.a和self.b作为我为他们制作的模拟类而不是使用A和B?

#I use this if I want to mock the entire server class
@mock.patch('myproject.server.MyServerClass',autospec=True)

1 个答案:

答案 0 :(得分:3)

我写的python越多,我对这种情况就越好奇。我倾向于引入依赖注入并在构造函数中传入创建的A和B类。这样可以很容易地看到外部依赖关系并在需要时更改它们。但有时这太过分了。你能不能只是:

server = Server()
server.a = MockA()
server.b = MockB()