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

使用assert测试is_valid_date函数时遭遇语法错误及疑问

解决assert语法错误及用法疑惑

嘿,我来帮你理清这个问题~

首先,你遇到的语法错误根源是:assert是Python里的语句,不是可以被调用的函数,所以你不能把它放在print后面当参数使用,print assert(...)这种写法本身就不符合Python的语法规则。

然后说说你对assert的疑惑:即使is_valid_date返回True,assert也不会“返回True”给print——因为它根本不是函数,没有返回值。assert的工作逻辑是这样的:

  • 当你写assert 条件时,如果条件为True,程序会默默继续执行,不会有任何输出或返回值;
  • 只有当条件为False时,它才会抛出AssertionError异常,用来提醒你“预期的条件不成立”。

那怎么正确实现你的测试需求呢?分两种情况:

情况1:只想验证日期有效性(不符合就报错)

直接单独用assert语句就行,不需要print:

# 测试2014年4月4日和2012年1月3日的is_valid_date
assert is_valid_date(2014, 4, 4)
assert is_valid_date(2012, 1, 3)

(这里的括号可以省略,因为assert是语句不是函数,加括号也不影响,但没必要)

情况2:想打印出验证的结果(不管对错都显示)

那直接调用函数并打印返回值就好,不需要用assert:

# 测试2014年4月4日和2012年1月3日的is_valid_date
print(is_valid_date(2014, 4, 4))
print(is_valid_date(2012, 1, 3))

这样当is_valid_date返回True时,就会在控制台打印出True啦。

另外看了你写的is_valid_date函数,逻辑是没问题的:先判断年份在datetime的有效范围内,再检查月份1-12,最后验证天数不超过当月的最大天数,符合条件就返回True,否则返回False。只要days_in_month函数的逻辑正确,那这些测试用例应该都会返回True的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:25:15