Python中断言错误返回空字符串

5 投票
3 回答
5473 浏览
提问于 2025-04-16 11:53

我正在做这个:

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,这个参数是当断言失败时要显示的消息。如果需要的话,可以把你的调试信息放在这里。

撰写回答