python – 在异常时执行屏幕截图
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 在异常时执行屏幕截图,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2471字,纯文字阅读大概需要4分钟。
内容图文
![python – 在异常时执行屏幕截图](/upload/InfoBanner/zyjiaocheng/734/a49bb71fb1854a02b6748c790917c2f2.jpg)
嘿,有一种方法可以捕获异常时的截图,任何异常.我的’失败’解决方案放在BaseTestCase,unittest.TestCase子类中:
class BaseTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
"""some code"""
@property
def failureException(self):
class MyFailureException(Exception):
def __init__(self_, *args, **kwargs):
screenshot_dir = '../error_log'
self.driver.save_screenshot('{0}/{1}.jpeg'.format(screenshot_dir, self.id()))
return super().__init__(*args, **kwargs)
MyFailureException.__name__ = Exception.__name__
return MyFailureException
最初它是AssertionError而不是Exception但它只会捕获断言错误而我对其他类型的错误更感兴趣
解决方法:
要在发生错误或故障时截取屏幕截图,请检查tearDown方法中当前是否正在处理异常:
import unittest, sys, exceptions
from selenium import webdriver
class TestCaseBase(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
def tearDown(self):
type, value, traceback = sys.exc_info()
if type is exceptions.AssertionError :
self.driver.save_screenshot(r'screenshot-failure.png')
elif type is exceptions.Exception :
self.driver.save_screenshot(r'screenshot-error.png')
self.driver.quit()
class MyTestCase(TestCaseBase):
def test_should_take_screenshot_on_failure(self):
self.driver.get("https://stackoverflow.com/")
self.assertTrue(False)
def test_should_take_screenshot_on_error(self):
self.driver.get("https://stackoverflow.com/")
raise Exception("my exception")
if __name__ == '__main__':
unittest.main()
您还可以覆盖方法TestResult.addError和TestResult.addFailure:
import unittest
from selenium import webdriver
class TestCaseBase(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
def tearDown(self):
self.driver.quit()
def run(self, result=None):
super(TestCaseBase, self).run(TestResultEx(result, self))
class MyTestCase(TestCaseBase):
def test_should_take_screenshot_on_failure(self):
self.driver.get("https://stackoverflow.com/")
self.assertTrue(False)
def test_should_take_screenshot_on_error(self):
self.driver.get("https://stackoverflow.com/")
raise Exception("my exception")
class TestResultEx(object):
def __init__(self, result, testcase):
self.result = result
self.testcase = testcase
def __getattr__(self, name):
return object.__getattribute__(self.result, name)
def addError(self, test, err):
self.result.addError(test, err)
self.testcase.driver.save_screenshot(r'screenshot-error.png')
def addFailure(self, test, err):
self.result.addFailure(test, err)
self.testcase.driver.save_screenshot(r'screenshot-failure.png')
if __name__ == '__main__':
unittest.main()
内容总结
以上是互联网集市为您收集整理的python – 在异常时执行屏幕截图全部内容,希望文章能够帮你解决python – 在异常时执行屏幕截图所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。