Das Schreiben von Tests ist heutzutage so mühsam geworden, dass ich mich fragte, ob Mox es leicht erstechen könnte.
Zuallererst die Klasse.
mox_generator.py
import mox
class MoxGenerator(object):
def __init__(self):
self.mox = mox.Mox()
Ich fange immer noch an darüber nachzudenken, also habe ich vorerst eine geschrieben. Alles ist in Ordnung, Stub, der True zurückgibt. Ohne die Argumente zu berücksichtigen. Das ist schrecklich (Schweiß).
python
def true_stub(self, stub_class, stub_method, num_args):
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(True)
Beim Anrufen sieht es so aus. Hier sollte MyClass.hoge (x, x, x) True zurückgeben. Die letzte Zahl ist die Anzahl der Argumente, die an MyClass.hoge übergeben werden sollen.
python
moxgen= MoxGenerator()
moxgen.true_stub(MyClass, 'hoge', 3)
Natürlich ist die Wiedergabe auch problematisch, daher ist der Name seltsam, aber legen Sie ihn in den Generator!
python
import contextlib
@contextlib.contextmanager
def mox_replay(self):
self.mox.ReplayAll()
yield
self.mox.VerifyAll()
Testausführungsseite.
example_test.py
with moxgen.mox_replay():
MyClass.method_which_should_call_hoge()
Ich habe es auch auf github hochgeladen. https://github.com/norobust/mox_generator Warum wird es nicht mit meinem richtigen Namen begangen? Wie änderst du es in einen Benutzernamen?
Recommended Posts