So lerne ich, wie py.test zu verwenden, indem Sie einfache Event-Emitter-Implementierung testen. Grundsätzlich , es sieht aus wie diesesRückgabe mehrerer Objekte von py.test Fixture
class EventEmitter():
def __init__(self):
...
def subscribe(self, event_map):
# adds listeners to provided in event_map events
def emit(self, event, *args):
# emits event with given args
Der Einfachheit halber ich Listener-Klasse erstellt, die in den Tests verwendet wird
class Listener():
def __init__(self):
...
def operation(self):
# actual listener
Derzeit Test sucht die folgende Art und Weise
@pytest.fixture
def event():
ee = EventEmitter()
lstr = Listener()
ee.subscribe({"event" : [lstr.operation]})
return lstr, ee
def test_emitter(event):
lstr = event[0]
ee = event[1]
ee.emit("event")
assert lstr.result == 7 # for example
Um Ereignis zu testen Emitter Ich muss prüfen, ob sich der innere Zustand des Hörers nach der Ereignisausbreitung geändert hat. Also, ich brauche zwei Objekte und ich frage mich, ob es einen besseren Weg gibt, um dies zu tun (vielleicht zwei Fixtures anstelle von einem irgendwie zu verwenden), weil das für mich irgendwie hässlich aussieht.
'lstr, ee = event'? – jonrsharpe
@jonrsharpe Nun, ich wusste einfach nicht, wie man dieses Ding nennt – Zallin