Ho una classe Foo che crea istanze di altre classi A , B e C nel suo costruttore. A , B e C condividono lo stesso parametro del costruttore e sono utilizzati in altre parti del codebase, non solo in Foo . A , B e C accedono a una risorsa esterna configurata dal parametro passato. Nei test unitari, A , B e C sono presi in giro con unittest.mock.patch .
class Foo(object):
def __init__(self, param):
self.a = A(param)
self.b = B(param)
self.c = C(param)
foo = Foo('param')
Il seguente sarebbe un miglioramento o solo un codice non necessario? Passare in unittest.mock.Mock oggetti nei test preferiti rispetto a unittest.mock.patch ? In pratica, A , B e C dovrebbero sempre condividere lo stesso parametro.
class Foo(object):
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
@classmethod
def from_param(cls, param):
return cls(A(param), B(param), C(param))
foo = Foo.from_param('param')