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

如何编写Python测试用例,使其在指定异常抛出时判定测试通过

问题根因

  • unittest框架的assertRaises方法要求第二个参数传入未执行的函数对象本身,后续参数为待传入测试函数的入参。你当前的写法直接调用了is_valid_email函数,函数会在assertRaises逻辑运行前就抛出异常,该异常无法被assertRaises捕获,因此测试会被判定为失败。

修复方案

提供两种常用的正确写法:

写法1:参数拆分传递

将测试函数、入参依次拆分传入assertRaises:

self.assertEqual(lambda_function.is_valid_email("test@email.com", "test@email.com"), True)
# 注意:函数后不加括号,参数依次放在assertRaises的入参列表中
self.assertRaises(Exception, lambda_function.is_valid_email, "test@email.com", "test")

写法2:上下文管理器写法(更推荐,可读性更高)

用with代码块包裹测试逻辑,还可以额外校验异常内容是否符合预期:

self.assertEqual(lambda_function.is_valid_email("test@email.com", "test@email.com"), True)
with self.assertRaises(Exception) as exc_context:
    lambda_function.is_valid_email("test@email.com", "test")
# 可选校验异常提示信息是否正确
self.assertEqual(str(exc_context.exception), "Username and Email address must be the same")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:00:05