最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

軟件測試 | Pytest測試框架之插件開發(fā)

2023-06-07 10:15 作者:愛測軟件測試  | 我要投稿

簡介

pytest 給我們開放了大量的 hook 函數(shù),可以編寫插件。

pytest 插件類型

pytest 可以識別到三種插件:

內(nèi)置插件:從 pytest 內(nèi)部 _pytest 目錄加載的插件

外部插件:通過 pip 安裝的插件(比如: pip install pytest-ordering )。

conftest.py 插件:測試目錄中的 conftest.py 加載

pytest hook 函數(shù)

pytest hook 鏈接:?docs.pytest.org/en/stab

pytest hook 函數(shù)也叫鉤子函數(shù),pytest 提供了大量的鉤子函數(shù),可以在用例的不同生命周期自動調(diào)用。 比如,在測試用例收集階段,可利用 hook 函數(shù)修改測試用例名稱的編碼。

PYTEST 改寫用例名稱編碼的插件

通常我們會把 hook 函數(shù)編寫在項目的 conftest.py 文件中。

創(chuàng)建測試用例:

運行結(jié)果:

運行時,pytest 會優(yōu)先加載 conftest.py 文件,然后再執(zhí)行測試用例,這個 hook 函數(shù) pytest_collection_modifyitems 是負(fù)責(zé)修改收集上來的測試用例的,也就是我們可以將收集上來的 測試用例重新改寫它的編碼規(guī)范,當(dāng)然也可以修改它的執(zhí)行順序。下面我們來看一下 pytest 提供了哪些 hook 函數(shù)。

PYTEST HOOK 函數(shù)執(zhí)行順序

pytest 提供了大量的 hook 函數(shù),執(zhí)行過程中幾乎所有的行為都是可以定制的。那么,pytest 可以改寫哪 些行為呢? 文字版 pytest hook 執(zhí)行順序:

可以利用 pytest hook 強大的功能開發(fā)出自己的插件。

pytest 編寫插件

大家在運行測試用例的時候,可能會遇到編碼的問題,比如路徑里有中文,展示的時候,可能會出現(xiàn)亂 碼。 測試代碼如下:

上面的代碼實現(xiàn)了 pytest 參數(shù)化的功能,由于測試數(shù)據(jù)有中文,生成的結(jié)果會以 unicode 編碼格式展示 出來,無法展示中文。命令行執(zhí)行結(jié)果如下:

下面我們來開發(fā)一個小插件,插件實現(xiàn)的功能就是將上面的 [\u54c8\u5229] unicode 編碼改成支持中 文的編碼格式。 創(chuàng)建目錄結(jié)構(gòu)如下:

創(chuàng)建插件包 pytest_changecode ,創(chuàng)建測試包 tests

在 tests/test_code.py 文件中添加測試代碼,如下:

在pytest_changecode/__init__.py 文件中添加改寫編碼的內(nèi)容,代碼如下:

從源碼 site_packages/_pytest/hookspec.py 中查看 pytest_collection_modifyitems hook 函 數(shù)的源碼:

是在用例收集完畢之后被調(diào)用,可以過濾或者調(diào)整測試用例執(zhí)行順序。 里面需要傳遞三個參數(shù),其中 items 是測試的用例對象列表??梢酝ㄟ^遍歷 items,然后對每個測試用例的名字重新編碼,實現(xiàn)改寫編 碼的效果。

pytest 插件打包及發(fā)布

場景:一般來說,我們需要用到的功能 pytest 大部分都已經(jīng)提供,即使 pytest 官網(wǎng)沒有提供,第三方插 件的功能也很豐富了。但不同的項目,有特殊的項目需求,比如上面的編碼問題,就沒有解決這個問題 的第三方插件?;蛘唔椖坷镉袀€特殊的功能需求,需要在項目組內(nèi)使用。就可以通過 pytest 打包的方 式,將這個特殊功能安裝布署到其它環(huán)境下。

上面已經(jīng)實現(xiàn)了重新編碼的插件,下面我們將這個插件打包成一個可安裝包,發(fā)布到 https://?pypi.org/?上面。 參照官方網(wǎng)址:?packaging.python.org/tu?從官網(wǎng)說明可以看出, setup.py 文件是打包時必不可少的一部分。

SETUP.PY 介紹

setup.py 是 Python 的發(fā)布工具的增強工具(適用于 Python 2.3.5 以上的版本,64 位平臺則適用于 Python 2.4 以上的版本),可以讓程序員更方便的創(chuàng)建和發(fā)布 Python 包,特別是那些對其它包具有依賴 性的狀況。

創(chuàng)建 setup.py 文件到項目 pytest-changecode 根目錄下。

setup.py文件配置:

參數(shù)解析:

  • name: 打包的名稱, 包名

  • url: github 地址 version: 打包的版本

  • classsifiers: 分類索引,添加分類標(biāo)簽,方便別人在 pypi 里搜索到這個插件

  • license: 授權(quán)證書, 版權(quán)

  • packages:是應(yīng)該包含在分發(fā)包中的所有 Python 導(dǎo)入包的列表。我們可以使用 find: 指令自動發(fā)現(xiàn) 所有包和子包,而不是手動列出每個包 options.packages.find 文件包指定要使用的包目錄。在本例 中,包列表將是 pytest_changecode ,因為它是唯一存在的包。

  • keywords: 當(dāng)前包的關(guān)鍵詞, 也是方便?pypi.org?進(jìn)行分類搜索

  • install_requires: 安裝相關(guān)的依賴,當(dāng)安裝這個插件的時候,會自動將相關(guān)的依賴安裝到你的 python 環(huán)境中。這里只依賴了 pytest 庫。

  • entry_point:配置入口模塊或者入口函數(shù)

注意:如果您想讓您的插件在外部可用,您可以為您的發(fā)行版定義一個所謂的入口點,以便 pytest 找到 您的插件模塊。入口點是由 setuptools 提供的功能。pytest 查找 pytest11 入口點以發(fā)現(xiàn)其插件(冒 號后面是模塊的名稱,冒號前面是為模塊起個別名)。

安裝依賴庫

打包需要依賴兩個第三方庫 setuptools 和 wheel 。

安裝依賴庫:

解釋:

setuptools 是 Python distutils 增強版的集合,它可以幫助我們更簡單的創(chuàng)建和分發(fā) Python 包,尤其是擁有依賴關(guān)系的包。

wheel 是新的 Python disribution ,用于替代 Python 傳統(tǒng)的 .egg 文件。目前有超過一半的庫 文件有對應(yīng)的 wheel 文件。 *.whl 文件有一點與 *.egg 文件相似。實際上它們都是偽裝的 *.zip 文件。如果你將 *.whl 文件名擴展改為 *.zip ,你就可以使用你的 zip 應(yīng)用程序打開它,并且可 以查看它包含的文件夾和文件。

大包

命令行進(jìn)入到 setup.py 文件路徑下,執(zhí)行打包命令:

python setup.py sdist bdist_wheel

執(zhí)行完命令,會在當(dāng)前項目下,生成三個文件夾 build , dist , pytest_change.egg-info 。

其中 dist 里有個 pytest_changecode-1.0-py3-none-any.whl 和 pytest_changecode-1.0.tar.gz ,其中 .whl 文件是安裝包,可以使用 pip 安裝到 python 環(huán)境 中。 .tar.gz 是源碼包。

可以使用 python setup.py install 進(jìn)行源碼安裝。

使用 pip install pytest_changecode-1.0-py3-none-any.whl 完成插件的安裝。

這時使用 pytest 解釋器再次運行 tests/test_code.py 文件,運行結(jié)果:

這時編碼已經(jīng)成功轉(zhuǎn)成中文,說明我們的插件已經(jīng)成功安裝到 python 環(huán)境中。

發(fā)布

現(xiàn)在可以將你打包的插件上傳到?pypi.org?上面,供別人下載使用了。

參照官方說明:?packaging.python.org/tu

1、注冊帳號

注冊一個 pypi 的帳號

2、創(chuàng)建 TOKEN

去?test.pypi.org/manage/ac?創(chuàng)建一個新的 API token。不要將其范 圍限制到特定的項目,因為您正在創(chuàng)建一個新項目。

注意:

關(guān)閉頁面前一定要復(fù)制這個 token,因為這個 token 只展示一次。

創(chuàng)建文件 $HOME/.pypirc

3、上傳包到 PYPI 上

twine 是開發(fā)人員向 pypi 上傳包的工具,安裝 twine:

python3 -m pip install --user --upgrade twine

運行上傳命令:

python3 -m twine upload --repository testpypi dist/*

系統(tǒng)將提示您輸入用戶名和密碼。 對于用戶名,請使用 __token__ 。 對于密碼,使用令牌值,包括 pypi- 前綴。 命令完成后,您將看到類似以下內(nèi)容的輸出:

上傳后,你的包應(yīng)該可以在?pypi.org?上查看,例如,?test.pypi.org/project/p?。


軟件測試 | Pytest測試框架之插件開發(fā)的評論 (共 條)

分享到微博請遵守國家法律
松桃| 额济纳旗| 隆子县| 永川市| 盈江县| 惠安县| 黑河市| 崇州市| 囊谦县| 察隅县| 普兰店市| 宜川县| 和林格尔县| 岱山县| 南京市| 大连市| 修水县| 东乌珠穆沁旗| 黄石市| 东丽区| 宿州市| 大同县| 滦平县| 秦皇岛市| 杭锦旗| 沙河市| 河北省| 南涧| 南澳县| 五寨县| 巴彦淖尔市| 东阳市| 三江| 靖安县| 大关县| 瓮安县| 聊城市| 平塘县| 东方市| 阿勒泰市| 铁力市|