gpt4 book ai didi

python - py.test 在捕捉到预期的异常后挂起

转载 作者:太空宇宙 更新时间:2023-11-03 11:43:56 26 4
gpt4 key购买 nike

我有一个非常简单的测试函数,如下所示:

def test_timeout_connect():
with pytest.raises(minus_one_rpc.TimeoutExpired):
c = minus_one_rpc.Client("tcp://localhost:14247", recv_timeout = 100)

如果没有 pytest.raises(...),我将得到一个带有预期异常的 FAILED 测试。但是,当我尝试测试正确的异常时,py.test 在该测试中挂起。

此特定测试中没有涉及固定装置,但它似乎与拆卸有关,因为当我按下 Ctrl-C 时,测试报告为 SUCCESS!

test_minus_one_rpc.py::test_timeout_connect ^CPASSED

================================================== 27 tests deselected ==================================================
======================================== 1 passed, 27 deselected in 3.02 seconds ========================================

可能是什么原因?

最佳答案

答案是:挂起的析构函数调用。

我的结论是,当我不期望/捕获异常时,exc_info 将保存对对象的引用,从而阻止析构函数运行。

(在我的例子中,我使用的是带有超时的 pyzmq,但没有设置 LINGER 套接字选项,因此 pyzmq 套接字的破坏将等待不存在的远程端发送一些东西。)

关于python - py.test 在捕捉到预期的异常后挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43817527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com