使用`assertRaises`时如何指定特定的异常实例?

How to specify specific instance of exception when using `assertRaises`?

我有一个自定义异常:

class AError(Exception):
    def __init__(self, a):
        self.a = a

以及引发此异常的函数:

def raise_a(self):
    raise AError(1)

使用 unittest,我如何测试 raise_aa == 1 加注 AError?使用:

self.assertRaises(AError, raise_a)
如果 AError 的任何实例(例如 AError(2))被引发,

将通过,但我希望它在 a != 1.

时失败

使用 assertRaises 作为上下文管理器可以让您访问捕获的异常:

with self.assertRaises(AError) as cm:
    raise_a()

self.assertEqual(cm.exception.a, 1)