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

Visual Studio 2022中pytest testlauncher.py启动失败求助

问题描述
  • 在Visual Studio 2022的虚拟环境中安装pytest(版本8.2.2),测试在VS外部可正常运行
  • VS测试资源管理器跳过所有测试,触发AttributeError: module '_pytest.compat' has no attribute '_translate_non_printable'错误
  • 已通过在pyproj中添加VSTest目标使dotnet test可用,寻求测试资源管理器的修复方案

环境信息:

  • 平台:win32
  • Python版本:3.12.4
  • pytest版本:8.2.2
  • pluggy版本:1.5.0

报错详情:

env1\Scripts\python.exe "C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2022\ENTERPRISE\COMMON7\IDE\EXTENSIONS\MICROSOFT\PYTHON\CORE\testlauncher.py" XXXX\ pytest "" 0 "" "" dummyfilename .\tests\test_optimization_host.py::test_bogus_endpoint --junitxml=XXX\TestResults\junitresults_e6fdf0a1-8aa1-4227-8f5c-f9bcc5b97e34.xml --rootdir=XXXX -o junit_logging=all -o junit_family=xunit1
Traceback (most recent call last):
  File "C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2022\ENTERPRISE\COMMON7\IDE\EXTENSIONS\MICROSOFT\PYTHON\CORE\testlauncher.py", line 189, in <module>
    main()
  File "C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2022\ENTERPRISE\COMMON7\IDE\EXTENSIONS\MICROSOFT\PYTHON\CORE\testlauncher.py", line 30, in main
    run(testRunner, coverage_file, test_file, args)
  File "C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2022\ENTERPRISE\COMMON7\IDE\EXTENSIONS\MICROSOFT\PYTHON\CORE\testlauncher.py", line 119, in run
    patch_translate_non_printable()
  File "C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2022\ENTERPRISE\COMMON7\IDE\EXTENSIONS\MICROSOFT\PYTHON\CORE\testlauncher.py", line 136, in patch_translate_non_printable
    translate_non_printable =  getattr(_pytest.compat, "_translate_non_printable")
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: module '_pytest.compat' has no attribute '_translate_non_printable'
Results for pytest not found xxxx\TestResults\junitresults_e6fdf0a1-8aa1-4227-8f5c-f9bcc5b97e34.xml
========== Test run finished: 1 Tests (0 Passed, 0 Failed, 1 Skipped) run in 176 ms ==========
========== Starting test discovery ==========
Starting pytest discovery for the XXXX project. This can take up to 60 seconds.
cd xxxx
set PYTHONPATH=XXX\nenv1\Scripts\python.exe C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2022\ENTERPRISE\COMMON7\IDE\EXTENSIONS\MICROSOFT\PYTHON\CORE\PythonFiles\testing_tools\run_adapter.py discover pytest --output-file ERROR: failed to patch pytest, _pytest.compat._translate_non_printable

========== Test discovery finished: 1 Tests found in 1.5 sec ==========
修复方案

方案1:降级pytest到兼容版本

VS 2022的Python测试工具目前对pytest 8.x版本兼容性不足,_translate_non_printable是pytest 7.x及更早版本的私有API,pytest 8.x已移除该属性。执行以下命令降级到兼容版本:

pip install pytest==7.4.4

降级后重启VS,重新运行测试资源管理器即可。

方案2:修改VS内置testlauncher.py脚本(需管理员权限,不推荐)

若不想降级pytest,可手动修改VS的测试启动脚本,跳过对该属性的依赖:

  1. 定位到路径:C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2022\ENTERPRISE\COMMON7\IDE\EXTENSIONS\MICROSOFT\PYTHON\CORE\testlauncher.py
  2. 用管理员权限打开文件,找到patch_translate_non_printable函数
  3. 修改函数内容,添加异常捕获逻辑:
def patch_translate_non_printable():
    try:
        import _pytest.compat
        translate_non_printable = getattr(_pytest.compat, "_translate_non_printable", None)
        if translate_non_printable:
            # 保留原有补丁逻辑(若有)
            pass
    except AttributeError:
        # 忽略属性不存在的错误
        pass
  1. 保存文件后重启VS,重新运行测试。

方案3:安装VS最新更新

微软已针对该兼容性问题在VS后续更新中修复,可打开Visual Studio Installer,检查并安装Visual Studio 2022的最新累积更新,更新后测试工具会适配pytest 8.x版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 16:44:55