从pytest fixtu返回多个对象

2024-05-13 02:11:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在通过测试一个简单的事件发射器实现来学习如何使用pytest。

基本上是这样的

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

为了方便起见,我创建了一个用于测试的Listener

class Listener():
    def __init__(self):
        ...
    def operation(self):
        # actual listener

目前,test如下所示

@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

为了测试事件发射器,我需要检查侦听器的内部状态在事件传播之后是否已更改。因此,我需要两个对象,我想知道是否有更好的方法来做到这一点(也许用两个设备而不是一个不知何故),因为这看起来有点难看。


Tags: selfeventmapinitpytestdef事件发射器