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

如何修复Django测试用例中图片路径生成的AssertionError?

问题原因

你遇到的断言失败是因为 os.path.join() 会根据操作系统生成对应的路径分隔符(Windows下是反斜杠 \,类Unix系统下是正斜杠 /),但测试用例里硬编码了正斜杠格式的路径,导致两边格式不匹配。

解决方案

有两种简单的修复方式,任选其一即可:

方案1:让测试用例的预期路径和函数逻辑保持一致

修改测试用例,用 os.path.join() 生成预期路径,自动适配当前系统的分隔符:

@patch('core.models.uuid.uuid4')
def test_recipe_file_name_uuid(self, mock_uuid):
    '''test generating image path'''
    uuid = "test-uuid"
    mock_uuid.return_value = uuid
    file_path = models.recipe_image_file_path(None, "example.jpg")
    # 用os.path.join构建预期路径
    expected_path = os.path.join('uploads', 'recipe', f'{uuid}.jpg')
    self.assertEqual(file_path, expected_path)

方案2:统一函数返回的路径分隔符为正斜杠

如果希望不管什么系统都返回正斜杠格式的路径,可以修改路径生成函数,替换分隔符:

import os
import uuid

def recipe_image_file_path(instance, filename):
    '''generating a file path for the new recipe image'''
    ext = os.path.splitext(filename)[1]
    filename = f'{uuid.uuid4()}{ext}'
    # 替换系统分隔符为正斜杠
    return os.path.join('uploads', 'recipe', filename).replace(os.sep, '/')

这样测试用例里的硬编码路径就能和函数返回值匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:33:08