1. 程式人生 > 其它 >pytest高階用法之外掛開發

pytest高階用法之外掛開發

背景

pytest,python全功能測試框架(用某句名言,甩unittest幾條街),鉤子函式、pytest外掛、pytest裝飾器都能擴充套件pytest。

提及pytest高階用法,不得不說pytest外掛,例如assert斷言失敗繼續斷言,就是外掛辦到的。

只知道用外掛、用hook遠遠不夠,如果能知道它的原理,自行的開發外掛,才能稱為懂框架。

經歷

* 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 吧 ———— 我願翻山越嶺,我願乘風破浪。只為你,揚帆,遠航...