提问人:Northers 提问时间:12/19/2017 最后编辑:asherbretNorthers 更新时间:12/20/2017 访问量:538
无法对拆解中的异常做出反应
Cannot react to exception in teardown
问:
我正在尝试在我的拆解方法中添加一些东西,以便在发生异常时,它会在关闭浏览器实例之前截取屏幕截图。
到目前为止,我有:-
def tearDown(self):
if sys.exc_info()[0]:
test_method_name = self._testMethodName
screenshot_name = common_functions.create_unique_id() + test_method_name + ".png"
common_functions.take_screenshot(self.driver, screenshot_name)
self.driver.close()
事实上,永远不会截取屏幕截图,如果我将 if 语句更改为 那么无论是否引发异常,它都会截取屏幕截图。if sys.exc_info():
当我查询返回的内容时,我得到.我希望第一个元素至少应该包含异常名称。sys.exc_info
None, None, None
答:
1赞
asherbret
12/20/2017
#1
从文档开始(我的重点):sys.exc_info()
此函数返回一个由三个值组成的元组,这些值提供有关当前正在处理的异常的信息。
这对于您要查找的内容来说还不够好,因为当调用时,测试期间发生的潜在异常已经得到处理,这就是为什么无论在测试期间是否引发异常,都将返回一个元组 .tearDown
sys.exc_info()
None, None, None
但是,您可以尝试使用不同的方法:定义一个标志,该标志将指示测试是否存在异常。这将看起来像:setUp
had_exception
class MyTest(unittest.TestCase):
def setUp(self):
self.had_exception = True
# ...
def test_sample(self):
self.assertTrue("your test logic here...")
self.had_exception = False
def tearDown(self):
if self.had_exception:
test_method_name = self._testMethodName
screenshot_name = common_functions.create_unique_id() + test_method_name + ".png"
common_functions.take_screenshot(self.driver, screenshot_name)
self.driver.close()
评论
0赞
Northers
12/20/2017
太好了 - 谢谢。这非常有效,并且很好地解释了为什么我也得到了 None, None, None 结果。:)
评论
tearDown