You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.10环境下使用pytest执行测试出现lineno缺失报错如何解决

问题根因

这个TypeError: required field "lineno" missing from alias报错是Python 3.10对typing模块的别名底层实现做了不兼容更新后,低版本pytest未做适配导致的兼容性问题,这也是同一份用例在Python3.9环境可以正常运行的核心原因。

解决方案
  • 方案1:升级pytest到适配版本(最推荐)
    直接将pytest升级到7.0及以上版本即可,该版本已经完成了Python3.10的兼容性适配,执行升级命令:
    pip install -U pytest>=7.0.0
    如果项目有其他依赖固定版本的约束,可以先排查依赖冲突后再完成升级。

  • 方案2:临时兼容补丁(仅适用于无法升级pytest的场景)
    如果因为项目依赖限制暂时不能升级pytest,可以在测试根目录的conftest.py文件最顶部添加如下补丁代码,绕过lineno字段校验:

    import typing
    from typing import _AliasType
    
    original_new = _AliasType.__new__
    
    def patched_new(cls, *args, **kwargs):
        if 'lineno' not in kwargs:
            kwargs['lineno'] = 0
        return original_new(cls, *args, **kwargs)
    
    _AliasType.__new__ = patched_new
    

    该方案仅做临时兼容使用,存在潜在的未知运行风险,条件允许优先选择升级pytest版本。

  • 方案3:锁定Python运行版本
    如果暂时不想改动项目依赖,也可以继续使用Python3.9作为测试运行环境,等待后续所有依赖完成Python3.10适配后再升级Python版本。


内容的提问来源于stack exchange,提问作者chydik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:24:01