python3的raise有traceback这个参数吗?如果有的话怎么用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3的raise有traceback这个参数吗?如果有的话怎么用?相关的知识,希望对你有一定的参考价值。
我百度看到有人是这样写出来的:raise [Exception [, args [, traceback]]],但是实际上好像没有这个参数。
我想写一个新的断言用于我的自动化测试,如果断言失败则raise触发异常,并将错误行输出到屏幕(可以点击跳转的那种),然后返回指定的值,如“测试不通过”等等
拿到返回值我会写入到Excel里面,请问各位这样需要怎么写?
手动抛出自己想要的异常
import traceback
msg = traceback.format_exc ()
print(msg)追问
不加异常处理的话raise下面的代码就不会执行了,不过这是一个好办法,谢谢
另外我还有一个问题,就是能不能把调用断言的地方也一起输出到屏幕?如下图(图1):
在提问之前我其实试过traceback的print_exc(),但是它输出的跳转链接没有上图红框的信息,而是如下图(图2)一样:
断言失败需要输出调用断言的位置才有意义,如果只输出raise语句的位置,那我要找出断言失败的位置也是个麻烦
你可以try catch 捕捉自己抛出的异常 对它进行处理
traceback的print_exc() 是捕获到详细的错误信息 方便日志保存 也可以自己查看 你也可以print
我的意思是将if __name__ == 'main'里面的代码封装成断言函数,然后去调用它,在断言失败的时候,输出调用断言的位置,并继续执行后面的代码,这样我才可以在测试脚本结束运行的时候知道是哪里的断言出错了。
但是现在的情况是,断言失败后,输出的错误信息里面没有我想要的,如果按照你刚刚发的截图那样,我就必须在每个断言的位置加上try,这样的话就会很麻烦了
在断言失败的时候,输出调用断言的位置,
这个断言的位置就是line 18, in <module>这种消息吗
你发给我个例子,你到底想要什么样的消息
追问def new_assert(value):
import traceback
if not value:
try:
raise AssertionError('错误')
except AssertionError:
msg = traceback.format_exc()
print(msg)
print('执行raise后面的代码')
new_assert(1 == 2)
以上是关于python3的raise有traceback这个参数吗?如果有的话怎么用?的主要内容,如果未能解决你的问题,请参考以下文章
Python2和Python3中raise Exception