拆解时无法对异常做出反应

问题描述 投票:1回答:1

我正在尝试向我的拆解方法添加一些内容,以便在发生异常时在关闭浏览器实例之前截取屏幕截图。

到目前为止我有: -

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。我希望第一个元素至少应包含异常名称。

python screenshot python-unittest sys chrome-web-driver
1个回答
1
投票

来自docssys.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()
© www.soinside.com 2019 - 2024. All rights reserved.