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

本地测试通过,Azure DevOps中却报FileNotFoundError,原因何在?

问题分析与解决方案

1. 路径分隔符与转义字符问题

你代码里直接用了Windows风格的反斜杠\,但Azure DevOps的构建代理大概率是Linux环境,Linux用正斜杠/作为路径分隔符。而且在Python中,反斜杠是转义字符,比如\C可能会被解析成特殊字符,导致实际路径和你预期的完全不一样。

解决办法:

  • 直接改用正斜杠:excelfile = 'test_files/Class/Default_Class_Input.xlsx'
  • 用Python跨平台路径工具(推荐):
    import os
    excelfile = os.path.join('test_files', 'Class', 'Default_Class_Input.xlsx')
    
    或者用更现代的pathlib:
    from pathlib import Path
    excelfile = Path('test_files') / 'Class' / 'Default_Class_Input.xlsx'
    
  • 用原始字符串(仅适配Windows,不推荐跨平台场景):excelfile = r'test_files\Class\Default_Class_Input.xlsx'

2. 工作目录不一致

本地测试时你的工作目录是项目根目录,但Azure DevOps运行测试时的工作目录可能不同——比如构建管道会把代码拉到特定子目录,或者测试任务的工作目录配置和本地不一致,导致相对路径的基准变了。

解决办法:

  • 基于项目根目录构建绝对路径:
    from pathlib import Path
    # 假设测试脚本在tests目录,项目根目录是其上级目录,可根据实际结构调整
    project_root = Path(__file__).parent.parent
    excelfile = project_root / 'test_files' / 'Class' / 'Default_Class_Input.xlsx'
    
  • 在Azure DevOps的测试任务中,检查并设置正确的工作目录(比如在任务的Working Directory字段指定项目根路径)。

3. 额外排查点

  • 确认Azure DevOps构建过程中,test_files目录确实被复制到了测试运行的目录下。部分构建任务默认只复制源代码目录,需要检查构建步骤是否包含测试文件目录。
  • 临时添加日志打印,方便排查实际路径:
    import os
    print("当前工作目录:", os.getcwd())
    excelfile = 'test_files/Class/Default_Class_Input.xlsx'
    print("目标文件绝对路径:", os.path.abspath(excelfile))
    
    查看Azure DevOps的测试输出日志,对比实际路径和预期是否一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:01:05