结合aop设计思想以及pathon函数式编程、decorator能够理解更清楚
python
示例class中with 语句执行过程web
执行contex manager表达式AssertErrorScreenShot(fn2shot,driver),获取对应上下文
执行AssertErrorScreenShot中__init__初始化contex实例,这里能够传入所需的参数
__enter__ 返回实例
执行with:下面的语句块self.assertEqual
__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,'登陆信息验证不经过,请检查网络或登陆信息!')