背景
pytest,python全功能测试框架(用某句名言,甩unittest几条街),钩子函数、pytest插件、pytest装饰器都能扩展pytest。
提及pytest高级用法,不得不说pytest插件,例如assert断言失败继续断言,就是插件办到的。
只知道用插件、用hook远远不够,如果能知道它的原理,自行的开发插件,才能称为懂框架。
测试开发进阶必备!手把手教你定制pytest插件,效率提升200% 插件开发
经历
* pytest,hook函数是什么原理?插件又是什么原理?
》
用的时候,百度用上,没有顾上去想,就比如,unittest收集用例的原理你会去细想吗?
就这样沉寂很久很久,突然有一天被问到conftest.py的函数名称的命名,不知道到函数从哪里?更不知道这个函数的意思?
带着问题思考了很久——》所谓hook函数就是,pytest运行过程中暴露给使用者使用的,你愿意用,结合自身的情况那就重写。
就像是机器处理运行的按钮之外,还有暴露的接口,这些接口专门对接HDMI、耳机、USB?
百度一定会找到有哪些但是必须要知道的是,在框架的什么地方。如下
\Lib\site-packages\_pytest\hookspec.py文件
》
而所谓的插件?也是如上所说的接口来实现了,只不过加了命令行的参数控制。来看下allure_pytest源码
从这句话就能看出,allure-pytest增加命令行参数的方法其实调用的是pytest暴露开发者的接口pytest_addoption
把这些hook函数调用封装起来打包,上传到pypi,再通过pip install。这变成了插件!
---------------------------------
搞懂了,Hook函数、插件、pytest.fixture。什么本地插件(conftest.py)、外部插件(allure-pytest)、内置插件(hook函数)、自定义插件?其实就是这样
最后提及我的插件,极其简单,就随意命名了:pytest-testpluggy
pip install 吧
测试开发进阶必备!手把手教你定制pytest插件,效率提升200% 插件开发