• 设为首页 加入收藏
  • 这样解决Python 3.10+版本中协程未被await的警告_配置pytest过滤器

    [ 2026/5/28 17:01:05 ]

    pytest运行时出现“coroutine ''xxx'' was never awaited”警告怎么办

    这个警告不是错误,但说明有协程对象被创建后彻底丢弃了——它不会执行、不抛异常、不发请求,只在GC时悄悄报一句RuntimeWarning。pytest默认不显示这类警告,所以你可能根本没看见;一旦开启,大量测试用例会突然刷屏。

    为什么pytest默认不报这个警告

    pytest默认只捕获DeprecationWarning和FutureWarning,而RuntimeWarning(包括未await协程的警告)被静默忽略。这不是bug,是设计选择:避免测试框架被非致命运行时提示干扰。

    Python自身在垃圾回收协程对象时才触发该警告,所以必须确保协程变量作用域结束(比如函数返回、局部变量被覆盖)

    pytest若未显式配置,连-W default参数也不会透传给子进程或fixture内部

    使用asyncio.run()包裹的顶层协程,其内部漏await的子协程仍会被警告——但pytest不拦,就直接刷到终端

    给pytest加警告过滤器的三种实操方式

    推荐按优先级顺序尝试,从项目级配置到单测粒度控制:

    在pyproject.toml中全局启用(最省心):复制AI写代码

    [tool.pytest.ini_options]

    python_warnings = ["default::RuntimeWarning"]

    命令行临时加参数(调试用):pytest -W default::RuntimeWarning

    单个测试函数内屏蔽(慎用,仅限已知安全的遗留代码):复制AI写代码

    @pytest.mark.filterwarnings("ignore::RuntimeWarning")

    def test_legacy_async_call():

    some_old_async_func() # 明知漏await,但暂时不改

    比过滤更关键的是定位源头

    警告本身只是症状。真正要解决的是“哪个调用点漏了await”。光靠pytest过滤器掩盖问题,下次CI可能因新协程引入又爆出来。

    PyCharm里打开Settings → Editor → Inspections → Python → Coroutine is not awaited,能实时标出黄色波浪线

    VS Code装Pylance插件后,默认启用reportUnusedCoroutine检查

    CI阶段加强制检查:在pyproject.toml里配mypy插件mypy-extensions,启用disallow_unawaited_coroutines = true

    注意asyncio.create_task()和asyncio.gather()也算合法消费,不触发警告;但list(map(my_async_func, items))这种写法会生成一堆未await协程对象,必须改成await asyncio.gather(*[my_async_func(x) for x in items])

    协程警告容易被当成噪音关掉,但它背后往往是逻辑失效——比如数据库没写入、HTTP请求根本没发出去。别让它安静地消失。

    查找
    热门文章
  • 导航站长必看:说说导航网站的推广方法和小心的事情
  • 坚持外链建设时永久战
  • 网络广告联盟是什么意思?--广告联盟评测
  • 网站交换外链需综合考虑的多方因素
  • 影响网站收录的六大因素
  • 浅谈一下关于伪原创
  • 浅谈垃圾站的运营模式
  • 服务器托管的优势与其功能的详解介绍
  • SEO不单单是关键词排名 还有整站优化
  • 优化行业站不要急功近利
  • 广告联盟评测之浅谈
  • 手把手教你利用英文站做LEAD赚美金
  • 谷歌不如百度几点原因--联盟评测看法
  • 程序员每天是怎么生活的
  • 6年的站长之路,路在何方
  • 百度蜘蛛饲养技巧
  • 推广网站的10个方法
  • 一个成功网站必需做到的几个要点
  • 讲述一个农民站长的故事
  • Google Adsense广告申请注册向导
  • 广告联盟评测纷飞 殃及站长无数
  • Google联盟申请完全手册--广告联盟评测
  • 购买弹窗流量做日付广告联盟经历
  • google联盟快速申请方法
  • 几个联盟的比较
  • 在自己网站上放Google广告申请详细步骤
  • 京华时报:优酷CEO古永锵 _ 坚持领跑将寒冬留给对手
  • GOOGLE广告联盟注册交流
  • 网站优化必不可少的5种心态
  • 如何提高个人网站收录率
  • 网站优化五大陷阱
  • 购买美国空间常见的四大误区
  • 如何申请google广告连联盟Google Adsense广告挣钱
  • 浅谈广告联盟评测网推广技巧和秘籍
  • 第一视频广告联盟介绍和评测
  • 网站建设的基本原则
  • 浅谈网站的几种盈利方式
  • 网站优化与竞价排名优缺点分析
  • 中国民航报:谷歌浏览器很好
  • 做网站了解对手方能百战不怠
  • 给网站收录率下个定义
  • 百什么是度联盟?
  • 推荐新手使用8大原则选择服务器和服务器托管
  • 如何有效推广网站--广告联盟评测网只我见
  • 为什么我的桌面会自动刷新?
  • 及时优化网站中的死链和错误链接
  • 告诉你最有效的提高网站访问量方法
  • 域名过期后多久可以注册
  • 什么是广告联盟评测?
  • 太平洋广告联盟宣布关闭
  • 做SEO时要重视的4项数据