自动化测试框架 拦截黑名单代码看不懂

def black_wrapper(fun):
    def run(*args, **kwargs):
        from app_demo1.app_PODEMO1.base.base_page import BasePage
        basepage: BasePage = args[0]

本人代码基础薄弱,谁能帮我逐行解释下这三行代码是什么意思?

def black_wrapper(fun):
    def run(*args, **kwargs):

这个是一个装饰器,接收传进来的方法进行处理,fun是传进来的方法,*args, **kwargs,是传递给fun的参数

basepage: BasePage = args[0]
这个是获取方法传入的第一个参数,一般来说是self;通过basepage,可以调用BasePage的方法,例如basepage.xxx,等同于self.xxx

# 装饰器的外层定义,用来接收函数对象
def black_wrapper(fun):
# 装饰器的内层定义,用来接收函数对象的参数
# *args, **kwargs 代表不定长参数
# 如果传入的是一个实例方法 args[0] 代表实例本身,也就是上面老师说的self
    def run(*args, **kwargs):
# 导包与类型注解。
        from app_demo1.app_PODEMO1.base.base_page import BasePage
        basepage: BasePage = args[0]

说明都在代码的注释里,涉及到的相关录播:

  1. 函数
  2. 函数的不定长参数
  3. 类型注解
  4. 装饰器

这四个录播建议按顺序复习一下