当前位置: 代码迷 >> 综合 >> pytest夹具完成/执行拆卸代码
  详细解决方案

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

热度:71   发布时间:2024-02-10 11:22:42.0
@contextlib.contextmanager
def connect(port):print("yield 之前")yield Foo(1,2)...  # close connectionprint("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))#测试方法运行完成后执行此方法类似于teardownr.append(equip)print("equipmentsasdfadsfds")return rdef 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"])