2011-02-15 88 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