我尝试在我的FastAPI应用程序中运行测试,我使用的是一个静态文件,其中包含一个带颜色的JSON。一旦我运行命令**'pytest {path of my test file}'**我得到错误- No such file or directory.
一开始我在后台的主页上运行下面这行代码-
app.mount("/static", StaticFiles(directory="static"), name="static")
应用程序工作正常,但测试不正常。
主要原因是这个功能:
with open("static/def_Sys/colors.json") as f:
li = json.load(f)
colors = [x['color'] for x in li]
names = [x['label'] for x in li]
for (x, col) in zip(names, colors):
colors_dict[x.upper()] = col # save systems (key) and color(value) in dictionary and return it
return colors_dict
在那之后,我试着做了两个动作来解决它-
1.删除了mount行,并在函数中添加了以下路径:
打开(“../../../static/def_Sys/colors.json”)的函数为f:
但应用程序无法运行(这是当前脚本的相对路径)
1.删除了装载行,并更改为此行-
打开(os.路径.abspath(“静态\默认_系统\颜色. json”),“r”)作为f:
应用程序运行,但测试找不到此静态文件的路径。
此外,我注意到测试没有使用与应用程序相同的路径。
例如:当我们在pytest中运行时:
“C:\用户\用户\Pycharm项目\应用程序\静态\定义_系统\颜色. json”
当我们运行应用程序时:
“C:\用户\用户\Pycharm项目\应用程序\应用程序\静态\定义_系统\颜色. json”
我试图找到一个解决方案,让我运行测试和我的应用程序,而不改变每次运行之间的代码。
1条答案
按热度按时间wxclj1h51#
您可以考虑使用https://github.com/tiangolo/fastapi/issues/3550和https://github.com/tiangolo/fastapi/discussions/8748进行临时破解。
如果需要,同样适用于
templates
文件夹。