我正在尝试向我的拆解方法添加一些内容,以便在发生异常时在关闭浏览器实例之前截取屏幕截图。
到目前为止我有: -
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
。我希望第一个元素至少应包含异常名称。
来自docs的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()