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

Python如何运行单元测试?异常场景下assert断言怎么使用?

Python单元测试异常场景断言方案

首先你需要先修正两处前置问题:

  • 原始类的method是实例方法,第一个参数缺失self,修正后的代码如下:
class A:
   def method(self, file):
       if file:
          # <do something>
       else:
          raise Exception("file not found")
  • 你现有测试代码里传的' '是带空格的非空字符串,Python中判断为真值,不会触发else分支的异常,需要传''(空字符串)、None这类假值才会命中异常逻辑。

正确断言写法

你要测试的是指定场景下代码抛出预期异常,需要用unittest内置的assertRaises上下文管理器来包裹调用代码,示例如下:

from unittest import TestCase

t1 = A()
class Test(TestCase):
    def test_method_no_path(self):
        # 写法1:仅验证是否抛出指定类型的异常
        with self.assertRaises(Exception):
            t1.method('')  # 传入空字符串触发异常

        # 写法2:同时验证异常类型和异常内容,严谨度更高
        with self.assertRaises(Exception) as context:
            t1.method('')
        self.assertEqual(str(context.exception), "file not found")

逻辑说明

直接调用会抛出异常的方法会直接导致测试执行失败,assertRaises会自动捕获指定范围代码抛出的异常,和你预期的异常类型做比对,符合预期则测试通过,否则失败。如果你自定义了专属异常类型,建议把Exception替换成对应的自定义异常类,断言的准确性会更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 14:45:02