跨目录执行unittest遇FileNotFoundError:找不到model_data/data.json
解决跨目录运行unittest时找不到数据文件的问题
问题根源:
运行test.py时,程序的工作目录是GenerateValues,但代码里写的相对路径model_data/data.json是相对于app文件夹的,系统会去GenerateValues/model_data/找文件,而实际数据文件在app/model_data/,所以触发了找不到文件的错误。
解决办法:
修改input_files.py,基于文件自身的位置生成绝对路径,确保无论从哪个目录运行程序,都能准确定位到数据文件。
修改后的input_files.py代码:
import os # 获取当前脚本所在目录的绝对路径 current_script_dir = os.path.dirname(os.path.abspath(__file__)) folder = "model_data" # 拼接出data.json的绝对路径 data1 = os.path.join(current_script_dir, folder, "data.json")
说明:
os.path.abspath(__file__):拿到input_files.py自身的完整绝对路径os.path.dirname():提取出该路径的目录部分,也就是app文件夹的绝对路径os.path.join():自动根据系统拼接路径分隔符,避免手动写路径字符串出现的适配问题
修改后,不管是从app目录单独运行测试,还是在GenerateValues目录下运行test.py,ProcessData类都能正确加载data.json,不会再出现文件找不到的错误。
内容的提问来源于stack exchange,提问作者jengacode
相关产品推荐
相关产品推荐

