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

Python运行报AssertionError: True is not false错误排查

报错根因定位

你触发AssertionError: True is not false的核心原因是代码存在3处逻辑错误,导致本该返回False的场景返回了True/非预期值:

  • 用户名重复判断逻辑写反:当前代码判断到用户名已存在于user_accounts时直接返回True,和需求中「用户名已存在需返回False」的要求完全相反,这是触发该断言错误的直接原因——重复注册场景下测试用例期望返回False,实际拿到了True。
  • 注册成功分支缺少返回值:密码校验通过、完成字典写入操作后,没有写return True,函数默认返回None,布尔判断时会出现非预期结果。
  • 密码校验函数存在两处缺陷:
    1. 正则表达式拼接错误,正向预查语法漏写匹配符,无法正确匹配「同时包含大小写、数字」的规则
    2. 密码长度不足8位时没有显式返回False,函数默认返回None,导致密码合法性判断失效
修复后完整代码
import re

def valid(password):
    # 优先校验长度,不足8位直接返回不合法
    if len(password) < 8:
        return False
    # 用原生字符串编写正则,避免转义错误,补全正向预查语法,校验大小写、数字要求
    regex = r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)"
    return bool(re.search(regex, password))

def signup(user_accounts, log_in, username, password):
    # 按优先级拦截不合法场景,命中任意规则直接返回False
    if username == password:
        return False
    if username in user_accounts:
        return False
    if not valid(password):
        return False
    # 所有校验通过后更新账号、登录状态字典,返回成功标识
    user_accounts[username] = password
    log_in[username] = False
    return True
逻辑验证

修复后的代码完全匹配需求给出的测试用例预期:

  • 用户名已存在时重复注册直接返回False
  • 密码长度不足8位、缺小写/大写/数字任意一类字符时返回False
  • 用户名与密码完全一致时返回False
  • 所有规则校验通过后正确写入字典、返回True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:36:21