在失败的断言时触发一个函数

时间:2013-11-21 23:38:35

标签: python assert

如果断言失败,有没有办法触发函数?

我正在考虑目前的单元测试,但如果需要可以改变测试框架。

我想在断言失败时截取屏幕截图

1 个答案:

答案 0 :(得分:4)

此:

try:
   assert something == something_else
except AssertionError:
   take_screenshot()

是你可以做到的一种方式。

在某些情况下,您可能想要使用装饰器:

>>> def assertd(function):
        def _f(*args):
            try:
                return function(*args)
            except AssertionError:
                takescreenshot()
        return _f

>>> @assertd
def f(x, y):
    assert x > 0
    return x + y

>>> f(1, 2)
3
>>> f(5, 6)
11
>>> f(-7, 8)
<Screenshot taken>