pytest 自定义HOOK函数

2022-01-17  本文已影响0人  软件测试小白

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

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

#myhook.pydefpytest_myhook(user):"""自定义HOOK函数"""defpytest_myhook2():"""自定义HOOK函数"""

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

.config.hook.pytest_myhook().

#插件类classuser:name ="herry"age =18def__init__(self, config):self.config = configself.config.hook.pytest_myhook(user=self)self.config.hook.pytest_myhook2()@pytest.mark.Adeftest_B():    print("BBB")if__name__=="__main__":    pytest.main([("pytest模块分享之hook2.py"), ("-s"), ("-m=A")])

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

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

defpytest_addhooks(pluginmanager):from.importmyhook    pluginmanager.add_hookspecs(myhook)defpytest_configure(config):config.user_ = user(config)    config.pluginmanager.register(config.user_)defpytest_myhook(user):print("username------%s"%user.name)    print("age------%s"% user.age)defpytest_myhook2():print("myhook2")

执行结果:

上一篇下一篇

猜你喜欢

热点阅读