pytest夹具完成/执行拆卸代码

@contextlib.contextmanager
def connect(port):
    print("yield 之前")
    yield Foo(1,2)
    ...  # close connection
    print("yield 之后")


@pytest.fixture
def equipments(request):
    r = []
    for port in ("C1", "C3", "C28"):
        cm = connect(port)
        equip = cm.__enter__()
        request.addfinalizer(functools.partial(cm.__exit__, None,None, None))#测试方法运行完成后执行此方法类似于teardown
        r.append(equip)
        print("equipmentsasdfadsfds")
    return r


def test_compare(equipments):
    equipments[0]

# 先执行 connent 遇到yield 返回  执行equipments  返回到test_compare  执行test_compare后因为加入了request.addfinalizer() 然后会去执行cm.__exit_ 最后执行了yield后的数据 最后结束


if __name__ == '__main__':
    pytest.main(["-s","test_login.py"])

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值