C'est une continuation de ce que j'ai écrit la dernière fois je veux un générateur mox.
Après tout, je voulais une valeur de retour, alors j'ai ajouté ret =
. Au fait, si vous l'appelez à plusieurs reprises, une erreur se produira, donc je vérifie l'instance pour l'empêcher, mais ce n'est pas intelligent ...
mox_generator.py
def stub(self, stub_class, stub_method, num_args, ret=None):
stubbed = getattr(stub_class, stub_method)
if not isinstance(stubbed, mox.MockAnything) and not isinstance(stubbed, mox.MockObject):
self.mox.StubOutWithMock(stub_class, stub_method)
stubbed = getattr(stub_class, stub_method)
args = tuple([mox.IgnoreArg() for i in range(num_args)])
stubbed(*args).AndReturn(ret)
En outre, un rédacteur de test sérieux (décent) vérifierait également les arguments.
mox_generator.py
def stub_with_args(self, stub_class, stub_method, num_args,
*args, **kwds):
if kwds.has_key('ret'):
ret = kwds.pop('ret')
else:
ret = None
stubbed = getattr(stub_class, stub_method)
if not isinstance(stubbed, mox.MockAnything) and not isinstance(stubbed, mox.MockObject):
self.mox.StubOutWithMock(stub_class, stub_method)
stubbed = getattr(stub_class, stub_method)
stubbed = getattr(stub_class, stub_method)
stub_args = tuple(map(self.stub_arg, args))
stub_kwds = {}
for key in kwds.keys():
stub_kwds[key] = self.stub_arg(kwds[key])
stubbed(*stub_args, **stub_kwds).AndReturn(ret)
def stub_arg(self, arg):
if arg is None:
return mox.IgnoreArg()
elif type(arg) == type(MoxGenerator):
return mox.IsA(arg)
else:
return arg
Je ne sais pas comment comparer «type». Eh bien, pour le moment. Ensuite, je veux créer quelque chose comme `` repeat_stub ''.
Recommended Posts