Traceb-6ren">
gpt4 book ai didi

SQLAlchemy: "catching classes that do not inherit from BaseException is not allowed"在 Pytest 中测试时

转载 作者:行者123 更新时间:2023-12-04 16:45:50 27 4
gpt4 key购买 nike

最近在 Pytest 中运行我的测试时,我开始在测试结果结束时收到一个奇怪的警告;以下内容的许多多次迭代:

Exception ignored in: <function _ConnectionRecord.checkout.<locals>.<lambda> at 0x10eea07a0>
Traceback (most recent call last):
File "/Users/username/appdev/scattr-api/venv/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 503, in <lambda>
File "/Users/username/appdev/scattr-api/venv/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 710, in _finalize_fairy
File "/Users/username/appdev/scattr-api/venv/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 528, in checkin
File "/Users/username/appdev/scattr-api/venv/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 387, in _return_conn
File "/Users/username/appdev/scattr-api/venv/lib/python3.7/site-packages/sqlalchemy/pool/impl.py", line 106, in _do_return_conn
TypeError: catching classes that do not inherit from BaseException is not allowed

无论测试是否通过,这都是最近开始发生的。我不明白为什么这个警告开始出现,或者它被“忽略”意味着什么,所以我不确定我应该怎么做,如果有的话。在运行我的实际应用程序时,我没有注意到任何问题,这只是运行测试时发生的事情。

回溯中的最后一个函数是“_do_return_conn”这一事实让我认为它与连接池有关,但我仍然不确定如何理解它......

最佳答案

我确定问题是由于在 pytest 测试中没有明确关闭连接。

我一直在使用自定义连接在测试中查找数据库中的值(以确保插入了正确的值),如果最后没有明确关闭,就会出现这个神秘的错误消息。

SQLAlchemy 有 garbage collection即使它们没有明确关闭,最终也会将连接返回到池中。但是,在运行 pytest 的上下文中,这在测试期间没有时间发生,从而导致神秘的错误消息。

关于SQLAlchemy: "catching classes that do not inherit from BaseException is not allowed"在 Pytest 中测试时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60862442/

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