
pytest 是一個成熟的全功能Python測驗工具,可以幫助您撰寫更好的程式,它與 python 自帶的 unittest 測驗框架類似,但 pytest 使用起來更簡潔和高效,并且兼容 unittest 框架,pytest 能夠支持簡單的單元測驗和復雜的功能測驗,pytest 本身支持單元測驗,可以結合 requests 實作介面測驗,結合selenium、appium 實作自動化功能測驗,使用 pytest 結合 allure 集成到 Jenkins 中可以實作持續集成,作業中一般會使用持續集成來完成代碼集成到主干分支之后的回歸測驗,通過自動化測驗的手段來實作產品的快速迭代,同時還能保證產品的高質量,
Pytest 結合 YAML
yaml是一個可讀性高,用來表達資料序列化的格式,pyyaml 模塊在 python 中用于處理 yaml 格式資料,主要使用yaml.safe_dump()和yaml.safe_load()函式將 python 值和 yaml 格式資料相互轉換,作業中常常使用 YAML 格式的檔案存盤測驗資料,
安裝
pip install PyYAML
完成資料驅動
創建用例檔案以及資料檔案來完成資料驅動的測驗案例,創建一個檔案夾 testdata,在這個檔案夾下創建data.yml和test_yaml.py檔案,
創建data.yml檔案:
-
- 1
- 2
-
- 20
- 30
創建“test_yaml.py”,代碼如下:
import pytest
import yaml
@pytest.mark.parametrize("a,b", yaml.safe_load(open("datas.yml",\
encoding='utf-8')))
def test_foo(a,b):
print(f"a + b = {a + b}")
代碼分析: yaml 檔案里定義了串列資料,通過 open( ) 方法獲取 data.yml 檔案物件,使用yaml.safe_load()加載這個檔案物件,將 yaml 格式檔案轉換為 python 值,分別傳到到用例中生成多條用例分別執行,
運行結果:
省略...
test_params.py::test_foo[1-2]
test_params.py::test_foo[20-30]
省略...
運行結果中[1-2]和[20-30]代碼傳入的兩組引數,分別傳入 test_foo( ) 用例方法中執行,并且分別生成兩條測驗結果,pytest 組合 yaml 實作資料驅動,yaml 檔案作為用例資料源,控制測驗用例的執行,使測驗用例資料維護更加方便快捷,
結合 Allure 生成測驗報告
測驗報告在專案中是一個至關重要的角色,報告可以體現測驗人員的作業量,開發人員可以從測驗報告中了解缺陷的情況,測驗經理可以從測驗報告中看到測驗人員的執行情況及測驗用例的覆寫率,專案負責人可以通過測驗報告查看整個專案還余留多少問題,此次版本是否測驗通過,
一個美觀、一目了然的測驗報告能夠非常清晰的反映一些問題,提供給相關人員了解專案的整體狀態,
Allure 框架是一種靈活的、輕量級、支持多語言的測驗報告工具,它不僅能夠以簡潔的 web 報告形式顯示已測驗的內容,而且允許參與開發程序的每個人從測驗的日常執行中提取最大限度的有用資訊,同時支持多種語言包括 Java、Python、JavaScript、Ruby、Groovy、PHP、.Net、 Scala,
安裝
Mac 可以使用 brew 安裝 allure,安裝命令如下:
brew install allure
其他作業系統請參考https://docs.qameta.io/allure/#_installing_a_commandline,與 pytest 結合需要安裝 allure-pytest 插件
pip install allure-pytest,
查看allure版本:
allure --version
運行:
第一步:在 pytest 執行測驗的時候,指定引數 –alluredir 選項及結果資料保存的目錄,代碼如下:
pytest --alluredir=tmp/my_allure_results
tmp/my_allure_results中保存了本次測驗的結果資料,
第二步:打開報告,需要啟動allure服務,在terminal中輸入allure serve [path/to/allure_results],代碼如下:
allure serve path/to/allure_results
也可以使用allure generate生成 html 格式的測驗結果報告,并使用allure open來打開報告,
allure generate ./result/ -o ./report/ --clean
上面的命令將 ./result/ 目錄下的測驗資料生成HTML測驗報告到 ./report 路徑下,–clean 選專案的是先清空測驗報告目錄,再生成新的測驗報告,然后使用下面的命令打開報告,
allure open -h 127.0.0.1 -p 8883 ./report/
上面這個命令則會啟動一個Web服務將已經生成的測驗報告打開,打開生成的測驗報告,在默認的瀏覽器打開測驗報告,報告如下圖:

上面的測驗報告首頁中展示了此次測驗的測驗用例數量以及成功用例、失敗用例、跳過用例的比例,測驗環境、SUITES、FEATURES BY STORIES 等基本資訊,當與 Jenkins 做了持續集成后,TREND 區域還將顯示,歷次測驗的通過情況,首頁的左邊欄,還從不同的維度展示測驗報告的其他資訊,
重點頁面介紹:
- Behaviors 頁面,按照 FEATURES 和 STORIES 展示測驗用例的執行結果
- Suites 頁面,Allure 測驗報告將每一個測驗腳本,作為一個 Suite,在首頁里點擊 Suites 區域內的任何一條
Suite,都會進入 Suites 頁面, - Graphs 頁面,展示了此次測驗結果的統計資訊,比如測驗用例執行結果狀態、測驗用例重要等級分布、測驗用例執行時間分布等
- 測驗用例詳情頁面,在 Suites 頁面上點擊任何一條測驗用例,Suites
頁面的右側將展示這條用例的詳細執行情況,在這個頁面可以看到測驗用例的每個步驟,以及每個步驟的執行結果,包括步驟里面添加的鏈接、圖片、網頁片段或者視頻作為重要資訊的補充,在這里可以一目了然的看到用例失敗的原因,

前端自動化測驗-百度搜索功能實戰
pytest 可以與 allure 結合生成測驗報告,在實際專案中,一旦用例報錯,我們希望能夠將當時應用的狀態記錄下來,記錄這些狀態的方式可以是日志、截圖、視頻等手段,并將這些記錄在測驗報告中,方便相關人員定位問題,allure 就能很好的實作這個目標,
以 web 網頁版本的百度為例,百度首頁呈現的功能:新聞、網頁、貼吧、知道、音樂、圖片、視頻、地圖等,我們以百度網頁的搜索功能為例,使用 Allure、pytest 結合 selenium 自動化測驗框架,完成一個搜索功能的測驗,為了模擬百度搜索功能場景,這里需要創建兩個檔案,資料檔案與用例檔案,首先創建資料管理檔案data/data.yml,代碼如下:
- allure- pytest- unittest
然后,創建用例檔案名為test_baidudemo.py,代碼如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import allure
import pytest
import yaml
from selenium import webdriver
import time
@allure.testcase("http://www.github.com")
@allure.feature("百度搜索")
@pytest.mark.parametrize('test_data1', yaml.safe_load(\
open("data/data.yml")))
def test_steps_demo(test_data1):
with allure.step("打開百度網頁"):
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.maximize_window()
with allure.step(f"輸入搜索詞:{test_data1}"):
driver.find_element_by_id("kw").send_keys(test_data1)
time.sleep(2)
driver.find_element_by_id("su").click()
time.sleep(2)
with allure.step("保存圖片"):
driver.save_screenshot("./result/b.png")
allure.attach.file("./result/b.png", \
attachment_type=allure.attachment_type.PNG)
with allure.step("關閉瀏覽器"):
driver.quit()
代碼決議:
allure.testcase用例標識,給定用例的鏈接,可以與用例的管理地址關聯,allure.feature功能模塊劃分,方便管理和運行測驗用例,
pytest.mark.parametrize用來引數化測驗用例,allure.step用來添加測驗步驟,在測驗報告里面會展示出來這個步驟說明,
執行:
pytest test_baidudemo.py -s -q --alluredir=./result/ allure serve ./result/
測驗結果圖:


上面的測驗報告展示運行時間,時長,用例數,通過率,以及測驗套件SUITES,環境等資訊,點擊左側欄最下方的Package可以看到所有的測驗用例以及測驗資料,點擊一條用例右側會展示出用例的優先級,資料,測驗步驟以及每個步驟的名稱及附加的圖片等資訊,這里添加了一個測驗用例的鏈接,可以與測驗用例的管理鏈接關聯起來,方便后期統計覆寫率,pytest 與 Allure 也可以與 Jenkins 集成,實作自動化測驗的持續集成,
下面是配套資料,對于做【軟體測驗】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!

最后: 可以在公眾號:傷心的辣條 ! 免費領取一份216頁軟體測驗工程師面試寶典檔案資料,以及相對應的視頻學習教程免費分享!,其中包括了有基礎知識、Linux必備、Shell、互聯網程式原理、Mysql資料庫、抓包工具專題、介面測驗工具、測驗進階-Python編程、Web自動化測驗、APP自動化測驗、介面自動化測驗、測驗高級持續集成、測驗架構開發測驗框架、性能測驗、安全測驗等,
學習不要孤軍奮戰,最好是能抱團取暖,相互成就一起成長,群眾效應的效果是非常強大的,大家一起學習,一起打卡,會更有學習動力,也更能堅持下去,你可以加入我們的測驗技術交流扣扣群:914172719(里面有各種軟體測驗資源和技術討論)
喜歡軟體測驗的小伙伴們,如果我的博客對你有幫助、如果你喜歡我的博客內容,請 “點贊” “評論” “收藏” 一鍵三連哦!
好文推薦
轉行面試,跳槽面試,軟體測驗人員都必須知道的這幾種面試技巧!
面試經:一線城市搬磚!又面軟體測驗崗,5000就知足了…
面試官:作業三年,還來面初級測驗?恐怕你的軟體測驗工程師的頭銜要加雙引號…
什么樣的人適合從事軟體測驗作業?
那個準點下班的人,比我先升職了…
測驗崗反復跳槽,跳著跳著就跳沒了…
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/356123.html
標籤:python
上一篇:今天面了個騰訊拿 38K 出來的,讓我見識到了基礎的天花板
下一篇:使用Python控制手機(一)
