Si no, quiero que repetir demasiado en un banco de pruebas, se podría hacer como esto ::
def apply_patches(func):
@functools.wraps(func)
@mock.patch('foo.settings.USE_FAKE_CONNECTION', False)
@mock.patch('foo.settings.DATABASE_URI', 'li://foo')
@mock.patch('foo.connection.api.Session.post', autospec=True)
def _(*args, **kwargs):
return func(*args, **kwargs)
return _
ahora puede usar eso en su conjunto de pruebas en lugar de una cantidad loca de decoradores por encima de cada función ::
def ChuckNorrisCase(unittest.TestCase):
@apply_patches
def test_chuck_pwns_none(self):
self.assertTrue(None)
[No hay espacios dentro de parens.] (Http://www.python.org/dev/peps/pep-0008/) – delnan
'return lambda x: reduce (lambda y, f: f (y), decs, x) '... bueno, después de tipear esto veo la ventaja de tu código :) –
Otra cosa que acabo de notar:' @composed (dec1, dec2) 'será equivalente a' @ dec2 @ dec1 ', que es al menos contrario a la intuición. –