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

Python中assert函数触发AssertionError的原因咨询

断言失败原因解析:URL参数与Cookie解析函数问题

你在使用Python的assert测试parse和parse_cookie函数时触发AssertionError,核心原因是这两个函数完全没实现解析逻辑,只是固定返回空字典,但断言语句期望它们能正确解析出URL参数或Cookie的键值对。

你的代码如下:

def parse(query: str) -> dict:
    return {}

if __name__ == '__main__':
    assert parse('https://example.com/path/to/page?name=ferret&color=purple') == {'name': 'ferret', 'color': 'purple'}
    assert parse('https://example.com/path/to/page?name=ferret&color=purple&') == {'name': 'ferret', 'color': 'purple'}
    assert parse('http://example.com/') == {}
    assert parse('http://example.com/?') == {}
    assert parse('http://example.com/?name=John') == {'name': 'John'}

def parse_cookie(query: str) -> dict:
    return {}


if __name__ == '__main__':
    assert parse_cookie('name=John;') == {'name': 'John'}
    assert parse_cookie('') == {}
    assert parse_cookie('name=John;age=28;') == {'name': 'John', 'age': '28'}
    assert parse_cookie('name=John=User;age=28;') == {'name': 'John=User', 'age': '28'}

具体错误点

  • parse函数问题:
    • 没有提取URL中?之后的查询字符串部分
    • 没有将查询字符串按&分割为独立的键值对
    • 没有处理键值对的=拆分逻辑,也没忽略末尾无效的&符号
  • parse_cookie函数问题:
    • 没有将Cookie字符串按;分割为独立项
    • 没有处理每个Cookie项的=拆分(包括值中包含=的特殊情况)
    • 没有过滤掉分割后产生的空字符串(比如末尾的;)

简单修复思路

修复parse函数

def parse(query: str) -> dict:
    result = {}
    # 提取?后面的查询部分
    query_part = query.split('?')[-1]
    if not query_part:
        return result
    # 按&分割键值对
    pairs = query_part.split('&')
    for pair in pairs:
        if not pair:
            continue
        # 只分割第一个=,处理值中包含=的情况
        key, *value_parts = pair.split('=')
        value = '='.join(value_parts)
        result[key] = value
    return result

修复parse_cookie函数

def parse_cookie(query: str) -> dict:
    result = {}
    if not query:
        return result
    # 按;分割,过滤空项
    cookie_items = [item.strip() for item in query.split(';') if item.strip()]
    for item in cookie_items:
        # 只分割第一个=
        key, *value_parts = item.split('=')
        value = '='.join(value_parts)
        result[key.strip()] = value.strip()
    return result

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 09:05:14