python with contextmanger理解应用之自动化测试webdriver 抓屏示例

  1. 结合aop设计思想以及pathon函数式编程、decorator可以理解更清楚

  2. 示例class中with 语句执行过程

    1. 执行contex manager表达式AssertErrorScreenShot(fn2shot,driver),获取对应上下文
    2. 执行AssertErrorScreenShot中__init__初始化contex实例,这里可以传入所需的参数
    3. __enter__ 返回实例
    4. 执行with:下面的语句块self.assertEqual
    5. __exit__ 处理可能的异常及其它自定义内容,类似try语句的finally ,返回false重新抛出该异常,true则忽略该异常继续
class AssertErrorScreenShot:
    def __init__(self,filename2shot,webdriver):
        self.filename2shot=filename2shot
        self.webdriver=webdriver
    def __enter__(self):
        return self
    def __exit__(self, exception_type, exception_value, exception_traceback):
        if exception_type == AssertionError:
            self.webdriver.get_screenshot_as_file(self.filename2shot)
            print '请查看出差页面截图'+self.filename2shot
            print exception_value
            self.webdriver.quit()
            return False
#调用
with AssertErrorScreenShot(fn2shot,driver):
            self.assertEqual(text,prompt_info,'登录信息验证不通过,请检查网络或登录信息!')


你可能感兴趣的:(python with contextmanger理解应用之自动化测试webdriver 抓屏示例)