pytest 自定义HOOK函数

除了系统提过的HOOK函数外,也可以通过自定义HOOK的方式实现想要的功能。

首先创建一个py文件,里面定义自己的HOOK函数,主要pytest里面的hook函数必须以pytest开头。

python 复制代码
#myhook.py


def pytest_myhook(user):
    """自定义HOOK函数"""


def pytest_myhook2():
    """自定义HOOK函数"""

其次创建自己的插件类,user类的重写__init__方法,注册钩子的时候带入pytest的config配置。在该方法中设置钩子入口:self

python 复制代码
.config.hook.pytest_myhook().

#插件类
class user:
    name = "herry"
    age = 18


    def __init__(self, config):
        self.config = config
        self.config.hook.pytest_myhook(user=self)
        self.config.hook.pytest_myhook2()




@pytest.mark.A
def test_B():
    print("BBB")




if __name__ == "__main__":
    pytest.main([("pytest模块分享之hook2.py"), ("-s"), ("-m=A")])

最后在conftest.py文件中注册钩子和引用实现它。其中注册方法要放在最前面。

先添加构造,在注册插件,

python 复制代码
def pytest_addhooks(pluginmanager):
    from . import myhook


    pluginmanager.add_hookspecs(myhook)




def pytest_configure(config):
    config.user_ = user(config)
    config.pluginmanager.register(config.user_)




def pytest_myhook(user):
    print("username------%s"%user.name)
    print("age------%s" % user.age)


def pytest_myhook2():
    print("myhook2")
执行结果:
相关推荐
南境十里·墨染春水4 分钟前
C++流类库 文件流操作
开发语言·c++
u0109147605 分钟前
C#怎么使用Span和Memory C#如何用Span优化内存操作减少GC压力提升性能【进阶】
jvm·数据库·python
咸鱼翻身小阿橙6 分钟前
Qt页面小项目
开发语言·qt·计算机视觉
m0_716430078 分钟前
CSS项目开发如何提速_应用BEM规范建立可复用的样式库
jvm·数据库·python
maqr_1109 分钟前
PyTorch bfloat16 张量转 NumPy 的兼容性解决方案
jvm·数据库·python
weixin_408717779 分钟前
mysql如何防止SQL注入攻击_使用预编译语句与参数化查询
jvm·数据库·python
皮肤科大白11 分钟前
X-AnyLabeling 快速入门
图像处理·python
weixin_4249993612 分钟前
http-equiv属性有哪些常用值_meta模拟HTTP头汇总【详解】
jvm·数据库·python
knight_9___13 分钟前
RAG面试题4
开发语言·人工智能·python·面试·agent·rag
WL_Aurora13 分钟前
每日一题——自然倍树
数据结构·python·算法·深度优先