Pytest+Allure初體驗
轉自:https://mp.weixin.qq.com/s/zF_YIPqpS_nMP4K8KTLYGw

下面簡單介紹一下~
01
pytest介紹
pytest是python的第三方測試框架,是基於unittest的擴展框架。
根據pytest的官方網站介紹,它具有如下特點:
1、非常容易上手,入門簡單,文檔豐富
2、能夠支持簡單的單元測試和復雜的功能測試
3、支持參數化
4、 執行測試過程中可以將某些測試跳過,或者對某些預期失敗的case標記成失敗
5、支持重復執行失敗的case
6、支持運行由nose, unittest編寫的測試case
7、具有很多第三方插件,並且可以自定義擴展
8、方便的和持續集成工具集成
02
如何編寫pytest測試用例
示例如下:

通過執行測試文件的方法(在test_py.py所在目錄下執行pytest或者pytest -q(q是quiet的簡拼),會尋找當前目錄及其子目錄下以test開頭的py文件或者以test結尾的py文件。
找到文件后,在文件中找到以test開頭函數並執行)。
執行上面的測試:

測試結果中可以看到,該測試共執行了兩個測試樣例,一個失敗一個成功。
同樣,我們也看到失敗樣例的詳細信息,和執行過程中的中間結果。
通過上面的實例,我們發現編寫pytest測試樣例非常簡單,只需要按照下面的規則:
· 測試文件以test_開頭(以_test結尾也可以)
· 測試類以Test開頭,並且不能帶有 __init__ 方法
· 測試函數以test_開頭
· 斷言使用基本的assert即可
可能有些同學會問為什么要使用斷言。
不管是功能測試,自動化測試,還是單元測試。一般都會預設一個正確的預期結果,而在測試執行的過程中會得到一個實際的結果。測試的成功與否就是拿實際的結果與預期的結果進行比較。這個比的過程實際就是斷言(assert)。
那么接下來再簡單介紹一下Allure
03
Allure介紹
Allure是一款非常輕量級並且非常靈活的開源測試報告生成框架。
Allure簡單易用,易於集成。
還支持絕大多數測試框架, 例如TestNG、Pytest、JUint等。
我們本次使用到的是基於Pytest框架集成Allure。
在pytest中使用Allure,需要使用一個Pytest的插件pytest-allure-adaptor
pytest-allure-adaptor的安裝步驟如下:

然后從
https://bintray.com/qameta/generic/allure2下載allure,解壓到本地后,將allure執行工具的bin目錄添加到系統變量path中。
同時也應該進行jdk環境配置
(注意,jdk安裝路徑中不要包含括號、空號,否則執行allure命令時會報錯)
在測試腳本中,怎么添加allure特性呢?
首先需要 import allure,示例如下:

從上面簡單的例子當中,可看到,使用了Allure的幾個特性:
a、利用Feature 和 Story 組織用例,如:一個大模塊M 下包含幾個小模塊A、B、C ;可以將M 設置為Feature,A、B、C 設置為不同的Story ,添加Featrue和Story
b、with pytest.allure.step(‘描述’) ,在報告中增加步驟顯示
c、allure.attach 用於向測試報告中輸入一些附加的信息,通常是一些測試數據信息
關於Allure的更多特性,大家可在官網學習,這里就不一一介紹了。
04
Allure測試報告的生成
怎么通過上面的測試腳本,生成allure所需要的測試結果文件呢?
在cmd命令行執行測試代碼:
py.test 測試用例目錄 –alluredir=./allure-result
生成allure所需要的測試結果文件 。
其中 –alluredir 表示生成測試結果保存路徑; ./allure-result 表示當前路徑下的allure-result文件下。

然后通過命令,生成測試報告
在cmd命令執行測試代碼:allure serve 測試用例目錄

生成的測試報告如下:
首頁

首頁中展示了本次測試的測試用例數量,成功用例、失敗用例、跳過用例的比例,ENVIRONMENT,SUITES,FEATURES BY STORIES等基本信息。
Behaviors
點擊一下FEATURES BY STORIES,將進入Behaviors頁面,這個頁面按照FEATURES和 STORIES展示測試用例的執行結果:

從這個頁面可以看到“日歷控件功能模塊”這個FEATURES包含的七個STORIES的測試用例執行情況。
Suites
點擊Suites區域下面的任何一條Suite,都將進入Suites頁面。
在Suites頁面上點擊任何一條測試用例,Suites頁面的右側將展示這條用例的詳細執行情況。
從這個頁面可以看到測試用例執行的具體步驟,以及每個步驟的執行結果、測試用例失敗原因。

結語
將Allure與Pytest測試框架相結合,生成Allure格式的測試報告就介紹完了。