2011-02-15 89 views
4

返回空字符串,我这样做:Asse田在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中的错误通常包含什么?

编辑:显然用户提供自己的消息。硒生成了许多这些:

except AssertionError, e: self.verificationErrors.append(str(e)) 

根本没有发送消息,所以它附加了一串空字符串到verificationErrors。

回答

4

不要从断言中捕获错误。 unittest模块中的所有断言取最后一个参数msg,这是断言失败时将引发的消息。如有必要,请将您的调试放在那里

+0

nooooooooooo。我有30个文件,其中包含许多由硒生成的断言。他们都是这样的。无论何时某个特定测试的断言失败,我都不知道断言失败的原因。 – tipu 2011-02-15 20:48:19

4

标准assert声明不会将任何东西放入AssertionError,这是重要的回溯。有一个assert expr, msg变体设置错误消息,如果你使用unittest,那么assertTruefailUnless已被弃用)的第二个参数将做到这一点。

1

听起来就像你想在失败时使用你的断言作为调试语句。这应该有助于...

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