微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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套接字的破坏将等待不存在的远程端发送内容.)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐