【发布时间】:2015-08-14 07:35:07
【问题描述】:
我正在尝试为一个辅助项目制作一个自动化测试框架,并且可以使用一些帮助来创建断言检查。
在 python 中运行...
assert(False)
给你这个...
Traceback (most recent call last):
File "test.py", line 1, in <module>
assert(False)
AssertionError
如您所见,回溯最低级别是assert(False)。所以我做了我的自定义断言,当断言成功时打印。
def custom_assert(condition):
if condition:
print("Yay! It werks!")
else:
raise Exception("Nay, it don't werks...")
custom_assert(False)
但是assert 给我的不是custom_assert 给我的。
Traceback (most recent call last):
File "test.py", line 14, in <module>
custom_assert(False)
File "test.py", line 12, in custom_assert
raise Exception("Nay, it don't werks...")
Exception: Nay, it don't werks...
这当然是默认行为。在 99.9999% 的时间里非常有用,但这是可以改进的一次。知道我在条件为假时调用的引发错误的方法引发了错误是没有用的。
我怎样才能让我的custom_assert 引发异常,并从调用者开始回溯,就像assert 一样?
P.S.:我不想打印它,我希望异常能够正确修改回溯,以便它也可以与调试器和其他工具一起正常工作!
编辑
澄清一下,我想要的回溯是这样的。
Traceback (most recent call last):
File "test.py", line 14, in <module>
custom_assert(False)
Exception: Nay, it don't werks...
【问题讨论】:
-
检查
tracebackmodule,特别是。extract_*的东西。可能是你想要的。 -
上一个示例中的回溯应该是什么样子?
标签: python exception python-3.x traceback