libralxj

导航

 

1、装饰器以 @开头,在不修改原函数代码的前提,扩展函数功能。

 固定语法: 

  @装饰器名字

  def 函数():

    函数内容

 

关键点:

  @必须写在函数正上方 、

  @和函数之间不能有空行、

  不用调用,自动生效。

作用:给下面的函数加功能。

2、示例:

#1、先有一个装饰器 (系统自带or自己写)
def my_decorator(func):
    def wrapper():
            print("before")  #额外功能
            func()  #执行原函数
            print("after")  #额外功能
        return wrapper

#2、使用装饰器
@my_decorator
def say_hello():
    print("hello")


#3、调用函数
say_hello()

运行结果:

  before

  hello

  after

3、最常用的装饰器语法

 ①夹具装饰器 (最常用)

@pytest.fixture
def login():
    print("登录")

② 跳过用例

@pytest.mark.skip
def test_login():
    assert 1==1

③标记用例

@pytest.mark.smoke
def test_pay():
    pass

一句话总结装饰器用法:

  就是在函数头上戴一顶“功能帽子”,不加代码、不改动逻辑,自动增强功能!

4、测试最常用的场景

① 实现前置、后置操作

@pytest.fixture
def 登录前置():

    #前置
    yield
    #后置

② 权限校验、登录判断

  执行函数之前,先判断有没有登录、有没有权限

  没登录  → 直接拦截,不执行功能

  有登录 →  正常运行

③ 日志记录 【自动化常用】

自动给每一个函数打印:

  开始时间

  结束时间

  运行结果

  报错信息

  不用每个用例手动写print

④ 异常捕获、错误重试【接口自动化常用】

  接口偶尔超时、失败

  用装饰器实现失败自动重试3次

  不用改原来的接口代码

⑤ 计时统计

  自动统计函数/用例运行耗时

  用来排查:哪个接口慢、哪个用例卡顿

⑥ 缓存数据

  重复调用同一个方法时,直接拿旧数据,不用重复请求

  比如:反复获取验证码、反复查数据库、提高效率

⑦ pytest用例标记/控制执行

  

@pytest.mark.smoke #冒烟用例
@pytest.mark.skip #跳过用例
@pytest.mark.error #异常用例

通过装饰器给用例打标签,批量执行/跳过

⑧ 参数校验

  执行函数前,检查参数是否合法

  比如:手机号、账号格式不对,直接拦截

 

 
posted on 2026-04-29 17:11  可不可以不悲伤  阅读(6)  评论(0)    收藏  举报