1. 程式人生 > 實用技巧 >pytest--學習筆記2

pytest--學習筆記2

在pytest--學習筆記1中記錄了pytest的基本用法(如何寫用例、定義前置後置函式、共享前置後置函式以及pytest的引數化)以及與unittest的區別。

這次則主要是記錄pytest實現篩選用例功能、pytest的用例失敗重執行機制、以及pytest整合優美的測試報告allure的學習過程。

一、pytest實現篩選用例執行

1. pytest是如何篩選用例的?

===> 通過給用例打標記的方式來篩選

2. pytest如何給用例打標記?

===> 1⃣️ 向pytest註冊標記

首先:在專案目錄下新建檔案pytest.ini ⚠️ 檔名、字尾是固定的!

其次:在pytest.ini檔案中,按照如下格式來新增標記名:

[pytest]

markers =

    標籤名1: 標籤說明,可以不寫,寫的話,只支援英文,不支援中文

    標籤名2: ...

    標籤名n: ...

    一行一個標籤名

pytest.ini

[pytest]
markers = 
        smoke: smoke cases
        regression: regression cases

===> 2⃣️ 通過裝飾器的方式給用例打上已註冊的標記

即 在測試用例方法上新增@pytest.mark.已註冊標記名,可以新增多個標記,如果是給測試類打標記,則其中的測試用例方法均帶有該標記

@pytest.mark.smoke
@pytest.mark.demo
def test_case_1(): xxx xxx

3. pytest篩選用例後,如何執行這些被篩選出的用例?

===> 1⃣️ 命令列執行:pytest -m "標記名"

===> 2⃣️ main函式執行:main(["-m", "標記名"])

二、pytest的用例失敗重執行機制

1. 為什麼要使用失敗重執行機制?

===> 由於UI test執行成功率受影響原因較多,所以在該用例執行失敗時,立即啟動失敗重執行機制,在所設定重執行次數內只要只有一次執行成功,那麼這條用例被執行結果為passed,反之如果均失敗,則該用例結果為failed

2. pytest重執行機制如何實現?

===> 外掛rerunfailures

===> 安裝方法:pip install pytest-rerunfailures

3. 如何設定重執行次數以及重執行間隔時間?

===> main()函式引數,--reruns 2 表示重執行兩次;--reruns-delay 表示每次重執行間隔為5秒鐘

三、pytest整合優美的測試報告allure

前言:pytest本身是可以生成多種樣式的測試報告(只是不那麼美觀) ===> 需要安裝pytest-html外掛

方法:pip install pytest-html

1. 生成JunitXML格式的測試報告,命令:--junitxml=path

2. 生成result log格式的測試報告,命令:--resultlog=report/log.txt

3. 生成html格式的測試報告,命令:--html=path(如:report/xxx.html)此處為相對路徑,相對pytest命令執行的根路徑的路徑,舉例表示:在report目錄下生成xxx.html測試報告

我使用的是第三種方式,直接在main函式中新增--html引數即可,如:main(["--html=Outputs/report/pytest_report.html"])

當然有了allure,就棄用上述報告啦~但是,allure這麼優秀,它不支援unittest哦!!!

先提供allure的官方文件地址:https://docs.qameta.io/allure/

⚠️⚠️⚠️一定要參考官方文件!!!因為官方文件上啥都有!!!是最權威的操作手冊!!!

要使用這麼優秀的測試報告框架,首先肯定要安裝上才能使用。

1. 如何安裝allure?

===> allure都是通過命令列來安裝的,各個平臺安裝命令不一樣,建議檢視官方文件,官方文件啥都有,我只是搬運工。

由於我的作業系統是mac os x 我本身也安裝了homebrew,所以我採取的安裝方式是:brew install allure

安裝成功後,可以通過命令allure檢視是否安裝成功

emm,來說一下官方文件提供的手動安裝操作步驟吧~~

===> 1⃣️ 下載壓縮包.zip,各個平臺通用。附上下載地址:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ 官方給的地址訪問有點問題,我自己找的這個具體的下載地址

===> 2⃣️ 解壓壓縮包

===> 3⃣️ 進入解壓後的目錄的bin目錄下

===> 4⃣️ mac或Linux使用者直接點選allure就行來,Windows點選執行allure.bat

===> 5⃣️ 將allure配置到系統環境變數中

環境變數的配置我就不細說啦~附上我Windows配置的截圖以及配置後在cmd中執行allure結果:

2. allure安裝好之後,該怎麼與pytest產生關聯呢?

===> 1⃣️ 外掛allure-pytest

===> 安裝方法:pip install allure-pytest

===> 2⃣️ 執行命令:pytest --alluredir=Outputs/report 讓pytest生成allure能夠識別的測試結果檔案並將結果檔案放在Outputs/report目錄下,注意Outputs/report這個路徑也是一個相對路徑,只需要指定目錄,不需要指定報告名和字尾

main函式中:main(["--alluredir=Outputs/report"])

3. 步驟2是讓pytest生成allure可識別的結果檔案,那麼如何讓allure呈現測試報告?

===> 執行命令:allure serve 步驟2中生成的allure可識別的測試結果檔案目錄路徑

執行成功後會開啟預設瀏覽器,呈現測試結果,如下圖: