一、HOOK函数详解
HOOK函数的定义
HOOK=钩子
钩子函数:
1、是个函数,在系统消息触发时被系统调用
2、不是用户自己触发的
3、使用时直接编写函数体
4、钩子函数的名称是确定,当系统消息触发,自动会调用。
比如:pytest_runtest_makereport
插件与hook函数关系:
插件就是用1个或者多个hook函数,也就是钩子函数构成的。如果想要编写新的插件,或者是仅仅改进现有的插件,都必须通过这个hook函数进行。所以想掌握pytest插件二次开发,必须搞定hook函数
【HOOK函数简单实践-修改pytest-html报告】
官方链接:https://pytest-html.readthedocs.io/en/latest/user_guide.html
【装饰器@pytest.hookimple(hookwrapper=True)】
@pytest.hookimple(hookwrapper=True)装饰的钩子函数,有以下两个作用:
(1) 可以获取到测试用例不同执行阶段的结果(setup call teardown)
(2) 可以获取钩子方法的调用结果(yield返回一个result对象)和调用结果的测试报告(返回一个report对象)
【HOOK函数排序/调用示例】
官方解释:https://docs.pytest.org/en/latest/how-to/writing_hook_functions.html
对于任何给定的钩子函数规格,可能存在多个实现,因此我们通常将钩子函数执行视为1:N的函数调用,其中N是已注