Python中断言错误返回空字符串
我正在做这个:
try: self.failUnless(sel.is_text_present("F!")) #sel.is_text_present("F!") is false
except AssertionError, e:
print("x"+e+"y")
sys.exit()
它只打印出xy,什么类名都没有,也没有其他内容。AssertionError通常包含什么错误信息呢?
编辑:显然用户可以提供自己的信息。selenium生成了很多这样的:
except AssertionError, e: self.verificationErrors.append(str(e))
没有发送任何信息,所以它在verificationErrors里加了一堆空字符串。
3 个回答
2
听起来你想在出错的时候,把你的断言当作调试信息来用。这样做应该会有帮助……
import traceback
try:
assert 1 == 2
except AssertionError:
traceback.print_exc()
这会打印出:
Traceback (most recent call last):
File "./foo.py", line 4, in <module>
assert 1 == 2
4
标准的 assert
语句不会把任何东西放进 AssertionError
中,重要的是错误的追踪信息。还有一种 assert expr, msg
的写法,可以设置错误信息。如果你在使用 unittest 这个测试工具,那么 assertTrue
的第二个参数(failUnless
已经不推荐使用了)可以用来设置错误信息。
4
不要去捕捉断言(assertion)产生的错误。在unittest模块中,所有的断言都有一个最后的参数,叫做msg
,这个参数是当断言失败时要显示的消息。如果需要的话,可以把你的调试信息放在这里。