摘要:前端自動化測試百度搜索功能實戰可以與結合生成測試報告。以網頁版本的百度為例,百度首頁呈現的功能新聞網頁貼吧知道音樂圖片視頻地圖等,我們以百度網頁的搜索功能為例,使用結合自動化測試框架,完成一個搜索功能的測試。
pytest 是一個成熟的全功能Python測試工具,可以幫助您編寫更好的程序。它與 python 自帶的 unittest 測試框架類似,但 pytest 使用起來更簡潔和高效,并且兼容 unittest 框架。pytest 能夠支持簡單的單元測試和復雜的功能測試,pytest 本身支持單元測試,可以結合 requests 實現接口測試,結合selenium、appium 實現自動化功能測試,使用 pytest 結合 allure 集成到 Jenkins 中可以實現持續集成。工作中一般會使用持續集成來完成代碼集成到主干分支之后的回歸測試,通過自動化測試的手段來實現產品的快速迭代,同時還能保證產品的高質量。
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 pytestimport 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 框架是一種靈活的、輕量級、支持多語言的測試報告工具,它不僅能夠以簡潔的 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 區域還將顯示,歷次測試的通過情況。首頁的左邊欄,還從不同的維度展示測試報告的其他信息。
重點頁面介紹:
pytest 可以與 allure 結合生成測試報告。在實際項目中,一旦用例報錯,我們希望能夠將當時應用的狀態記錄下來,記錄這些狀態的方式可以是日志、截圖、視頻等手段,并將這些記錄在測試報告中,方便相關人員定位問題。allure 就能很好的實現這個目標。
以 web 網頁版本的百度為例,百度首頁呈現的功能:新聞、網頁、貼吧、知道、音樂、圖片、視頻、地圖等,我們以百度網頁的搜索功能為例,使用 Allure、pytest 結合 selenium 自動化測試框架,完成一個搜索功能的測試。為了模擬百度搜索功能場景,這里需要創建兩個文件,數據文件與用例文件。首先創建數據管理文件data/data.yml,代碼如下:
- allure- pytest- unittest
然后,創建用例文件名為test_baidudemo.py,代碼如下:
#!/usr/bin/env python# -*- coding: utf-8 -*-import allureimport pytestimport yamlfrom selenium import webdriverimport 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(里面有各種軟件測試資源和技術討論)
喜歡軟件測試的小伙伴們,如果我的博客對你有幫助、如果你喜歡我的博客內容,請 “點贊” “評論” “收藏” 一鍵三連哦!
轉行面試,跳槽面試,軟件測試人員都必須知道的這幾種面試技巧!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/123209.html
摘要:我覺得了解簡歷和面試的技巧可以幫助你更好的去學習重要的知識點以及更好地去準備面試以及面試,說實話,我個人覺得這些東西還挺重要的。在本文里,我將介紹我這段時間里更新簡歷和面試的相關經歷。 分享一篇很不錯的文章!本文作者曾經寫過《Java Web輕量級開發面試教程》和 《Java核心技術及面試指南》這兩本書。我覺得了解簡歷和面試的技巧可以幫助你更好的去學習重要的知識點以及更好地去準備面試以...
摘要:文件完整性監測持續監控您的云服務器,保護重要的系統二進制文件和配置文件不會受到未經授權的或惡意的變更。首先會記錄下云服務器系統的清潔狀態,作為基準。您可以通過一個在線管理控制臺,監控所有的云服務器。 DEVSECOPS 所面臨的挑戰 敏捷開發和 DevOps 方法的出現使軟件開發的速度與質量都有所提升,但它們不經意地也為安全機構增壓不少。從前的安全策略是基于靜態數據的,而在產品上線前才...
摘要:緣起我們公司要與團隊進入了公司,要與公司共同開發一個項目,當然這個項目中,是基于微服務組件化進行開發。大多就是一個項目進度相關的。正常因為屬于外包,那么工作制應當按照公司的有次周五晚上,點半走了,被公司舉報。 ...
摘要:場景為了多維度掌控嫌疑犯的犯罪特征數據,你警署最高長官想要獲取并實時監控張三的貸款數額存貸比存款和貸款兩者比率的變化。 ================前言=================== 初衷:以系列故事的方式展現 MobX 源碼邏輯,盡可能以易懂的方式講解源碼; 本系列文章: 《【用故事解讀 MobX源碼(一)】 autorun》 《【用故事解讀 MobX源碼(二)】...
閱讀 1381·2021-11-22 09:34
閱讀 2587·2021-11-12 10:36
閱讀 1118·2021-11-11 16:55
閱讀 2331·2020-06-22 14:43
閱讀 1473·2019-08-30 15:55
閱讀 1986·2019-08-30 15:53
閱讀 1771·2019-08-30 10:50
閱讀 1229·2019-08-29 12:15