【发布时间】:2015-08-18 21:18:54
【问题描述】:
我正在尝试捕获警告消息,打印警告消息,然后以通过状态退出测试用例。在测试用例中,我有以下代码:
testcase.py:
try:
warnings.filterwarnings('error')
activeConfig(driver, url, None, None, True).confirmConfigSet()
except Warning as e:
print e.message
return
由于我能够毫无问题地捕捉到警告,因此我只会显示实际捕捉到的警告:
code-where-warning-is-caught.py:
.
.
.
except (Exception, NoSuchElementException, TimeoutException):
global_vars.attemptedToEnableDatabase = True
warnings.warn("\nWARNING : DATABASE PACKAGES HAVE NOT BEEN INSTALLED SO THE DATABASE CANNOT BE ENABLED.", UserWarning)
return
我可以很好地捕捉到警告,但我不断收到以下错误:
E DeprecationWarning: BaseException.message has been deprecated as of
Python 2.6
如果我删除测试用例代码的“e”部分,使其看起来像...
try:
warnings.filterwarnings('error')
activeConfig(driver, url, None, None, True).confirmConfigSet()
except Warning:
return
...测试用例完全按照我想要的方式运行,除了它不打印警告消息。如何捕获异常、打印警告消息并以通过状态退出测试用例?我也愿意接受更有经验的编码人员可能提出的任何改进想法。
【问题讨论】:
-
您尝试过 sys.exc_info() 吗?它返回三个项目的三元组,第一个和第二个元素可能是你想要的。
-
感谢@Anand S Kumar。我玩了一下,并能够使用“sys.exc_info()[1]”获得我想要的消息。
标签: python selenium selenium-webdriver webdriver