摘要:前端自動(dòng)化測(cè)試百度搜索功能實(shí)戰(zhàn)可以與結(jié)合生成測(cè)試報(bào)告。以網(wǎng)頁(yè)版本的百度為例,百度首頁(yè)呈現(xiàn)的功能新聞網(wǎng)頁(yè)貼吧知道音樂(lè)圖片視頻地圖等,我們以百度網(wǎng)頁(yè)的搜索功能為例,使用結(jié)合自動(dòng)化測(cè)試框架,完成一個(gè)搜索功能的測(cè)試。
pytest 是一個(gè)成熟的全功能Python測(cè)試工具,可以幫助您編寫更好的程序。它與 python 自帶的 unittest 測(cè)試框架類似,但 pytest 使用起來(lái)更簡(jiǎn)潔和高效,并且兼容 unittest 框架。pytest 能夠支持簡(jiǎn)單的單元測(cè)試和復(fù)雜的功能測(cè)試,pytest 本身支持單元測(cè)試,可以結(jié)合 requests 實(shí)現(xiàn)接口測(cè)試,結(jié)合selenium、appium 實(shí)現(xiàn)自動(dòng)化功能測(cè)試,使用 pytest 結(jié)合 allure 集成到 Jenkins 中可以實(shí)現(xiàn)持續(xù)集成。工作中一般會(huì)使用持續(xù)集成來(lái)完成代碼集成到主干分支之后的回歸測(cè)試,通過(guò)自動(dòng)化測(cè)試的手段來(lái)實(shí)現(xiàn)產(chǎn)品的快速迭代,同時(shí)還能保證產(chǎn)品的高質(zhì)量。
yaml是一個(gè)可讀性高,用來(lái)表達(dá)數(shù)據(jù)序列化的格式。pyyaml 模塊在 python 中用于處理 yaml 格式數(shù)據(jù),主要使用yaml.safe_dump()和yaml.safe_load()函數(shù)將 python 值和 yaml 格式數(shù)據(jù)相互轉(zhuǎn)換。工作中常常使用 YAML 格式的文件存儲(chǔ)測(cè)試數(shù)據(jù)。
安裝
pip install PyYAML
創(chuàng)建用例文件以及數(shù)據(jù)文件來(lái)完成數(shù)據(jù)驅(qū)動(dòng)的測(cè)試案例,創(chuàng)建一個(gè)文件夾 testdata,在這個(gè)文件夾下創(chuàng)建data.yml和test_yaml.py文件。
創(chuàng)建data.yml文件:
- - 1 - 2- - 20 - 30
創(chuàng)建“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 文件里定義了列表數(shù)據(jù),通過(guò) open( ) 方法獲取 data.yml 文件對(duì)象,使用yaml.safe_load()加載這個(gè)文件對(duì)象,將 yaml 格式文件轉(zhuǎn)換為 python 值,分別傳到到用例中生成多條用例分別執(zhí)行。
運(yùn)行結(jié)果:
省略...test_params.py::test_foo[1-2] test_params.py::test_foo[20-30] 省略...
運(yùn)行結(jié)果中[1-2]和[20-30]代碼傳入的兩組參數(shù),分別傳入 test_foo( ) 用例方法中執(zhí)行,并且分別生成兩條測(cè)試結(jié)果。pytest 組合 yaml 實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng),yaml 文件作為用例數(shù)據(jù)源,控制測(cè)試用例的執(zhí)行,使測(cè)試用例數(shù)據(jù)維護(hù)更加方便快捷。
測(cè)試報(bào)告在項(xiàng)目中是一個(gè)至關(guān)重要的角色,報(bào)告可以體現(xiàn)測(cè)試人員的工作量,開發(fā)人員可以從測(cè)試報(bào)告中了解缺陷的情況,測(cè)試經(jīng)理可以從測(cè)試報(bào)告中看到測(cè)試人員的執(zhí)行情況及測(cè)試用例的覆蓋率,項(xiàng)目負(fù)責(zé)人可以通過(guò)測(cè)試報(bào)告查看整個(gè)項(xiàng)目還余留多少問(wèn)題,此次版本是否測(cè)試通過(guò)。
一個(gè)美觀、一目了然的測(cè)試報(bào)告能夠非常清晰的反映一些問(wèn)題,提供給相關(guān)人員了解項(xiàng)目的整體狀態(tài)。
Allure 框架是一種靈活的、輕量級(jí)、支持多語(yǔ)言的測(cè)試報(bào)告工具,它不僅能夠以簡(jiǎn)潔的 web 報(bào)告形式顯示已測(cè)試的內(nèi)容,而且允許參與開發(fā)過(guò)程的每個(gè)人從測(cè)試的日常執(zhí)行中提取最大限度的有用信息。同時(shí)支持多種語(yǔ)言包括 Java、Python、JavaScript、Ruby、Groovy、PHP、.Net、 Scala。
Mac 可以使用 brew 安裝 allure,安裝命令如下:
brew install allure
其他操作系統(tǒng)請(qǐng)參考https://docs.qameta.io/allure/#_installing_a_commandline。與 pytest 結(jié)合需要安裝 allure-pytest 插件
pip install allure-pytest。
查看allure版本:
allure --version
第一步:在 pytest 執(zhí)行測(cè)試的時(shí)候,指定參數(shù) –alluredir 選項(xiàng)及結(jié)果數(shù)據(jù)保存的目錄,代碼如下:
pytest --alluredir=tmp/my_allure_results
tmp/my_allure_results中保存了本次測(cè)試的結(jié)果數(shù)據(jù)。
第二步:打開報(bào)告,需要啟動(dòng)allure服務(wù),在terminal中輸入allure serve [path/to/allure_results],代碼如下:
allure serve path/to/allure_results
也可以使用allure generate生成 html 格式的測(cè)試結(jié)果報(bào)告,并使用allure open來(lái)打開報(bào)告。
allure generate ./result/ -o ./report/ --clean
上面的命令將 ./result/ 目錄下的測(cè)試數(shù)據(jù)生成HTML測(cè)試報(bào)告到 ./report 路徑下,–clean 選項(xiàng)目的是先清空測(cè)試報(bào)告目錄,再生成新的測(cè)試報(bào)告,然后使用下面的命令打開報(bào)告。
allure open -h 127.0.0.1 -p 8883 ./report/
上面這個(gè)命令則會(huì)啟動(dòng)一個(gè)Web服務(wù)將已經(jīng)生成的測(cè)試報(bào)告打開。打開生成的測(cè)試報(bào)告,在默認(rèn)的瀏覽器打開測(cè)試報(bào)告,報(bào)告如下圖:
上面的測(cè)試報(bào)告首頁(yè)中展示了此次測(cè)試的測(cè)試用例數(shù)量以及成功用例、失敗用例、跳過(guò)用例的比例。測(cè)試環(huán)境、SUITES、FEATURES BY STORIES 等基本信息,當(dāng)與 Jenkins 做了持續(xù)集成后,TREND 區(qū)域還將顯示,歷次測(cè)試的通過(guò)情況。首頁(yè)的左邊欄,還從不同的維度展示測(cè)試報(bào)告的其他信息。
重點(diǎn)頁(yè)面介紹:
pytest 可以與 allure 結(jié)合生成測(cè)試報(bào)告。在實(shí)際項(xiàng)目中,一旦用例報(bào)錯(cuò),我們希望能夠?qū)?dāng)時(shí)應(yīng)用的狀態(tài)記錄下來(lái),記錄這些狀態(tài)的方式可以是日志、截圖、視頻等手段,并將這些記錄在測(cè)試報(bào)告中,方便相關(guān)人員定位問(wèn)題。allure 就能很好的實(shí)現(xiàn)這個(gè)目標(biāo)。
以 web 網(wǎng)頁(yè)版本的百度為例,百度首頁(yè)呈現(xiàn)的功能:新聞、網(wǎng)頁(yè)、貼吧、知道、音樂(lè)、圖片、視頻、地圖等,我們以百度網(wǎng)頁(yè)的搜索功能為例,使用 Allure、pytest 結(jié)合 selenium 自動(dòng)化測(cè)試框架,完成一個(gè)搜索功能的測(cè)試。為了模擬百度搜索功能場(chǎng)景,這里需要?jiǎng)?chuàng)建兩個(gè)文件,數(shù)據(jù)文件與用例文件。首先創(chuàng)建數(shù)據(jù)管理文件data/data.yml,代碼如下:
- allure- pytest- unittest
然后,創(chuàng)建用例文件名為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("打開百度網(wǎng)頁(yè)"): 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("關(guān)閉瀏覽器"): driver.quit()
代碼解析:
allure.testcase用例標(biāo)識(shí),給定用例的鏈接,可以與用例的管理地址關(guān)聯(lián)。allure.feature功能模塊劃分,方便管理和運(yùn)行測(cè)試用例。
pytest.mark.parametrize用來(lái)參數(shù)化測(cè)試用例。allure.step用來(lái)添加測(cè)試步驟,在測(cè)試報(bào)告里面會(huì)展示出來(lái)這個(gè)步驟說(shuō)明。
執(zhí)行:
pytest test_baidudemo.py -s -q --alluredir=./result/ allure serve ./result/
測(cè)試結(jié)果圖:
上面的測(cè)試報(bào)告展示運(yùn)行時(shí)間,時(shí)長(zhǎng),用例數(shù),通過(guò)率,以及測(cè)試套件SUITES,環(huán)境等信息,點(diǎn)擊左側(cè)欄最下方的Package可以看到所有的測(cè)試用例以及測(cè)試數(shù)據(jù),點(diǎn)擊一條用例右側(cè)會(huì)展示出用例的優(yōu)先級(jí),數(shù)據(jù),測(cè)試步驟以及每個(gè)步驟的名稱及附加的圖片等信息。這里添加了一個(gè)測(cè)試用例的鏈接,可以與測(cè)試用例的管理鏈接關(guān)聯(lián)起來(lái),方便后期統(tǒng)計(jì)覆蓋率。pytest 與 Allure 也可以與 Jenkins 集成,實(shí)現(xiàn)自動(dòng)化測(cè)試的持續(xù)集成。
下面是配套資料,對(duì)于做【軟件測(cè)試】的朋友來(lái)說(shuō)應(yīng)該是最全面最完整的備戰(zhàn)倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)也陪伴我走過(guò)了最艱難的路程,希望也能幫助到你!
最后: 可以在公眾號(hào):傷心的辣條 ! 免費(fèi)領(lǐng)取一份216頁(yè)軟件測(cè)試工程師面試寶典文檔資料。以及相對(duì)應(yīng)的視頻學(xué)習(xí)教程免費(fèi)分享!,其中包括了有基礎(chǔ)知識(shí)、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫(kù)、抓包工具專題、接口測(cè)試工具、測(cè)試進(jìn)階-Python編程、Web自動(dòng)化測(cè)試、APP自動(dòng)化測(cè)試、接口自動(dòng)化測(cè)試、測(cè)試高級(jí)持續(xù)集成、測(cè)試架構(gòu)開發(fā)測(cè)試框架、性能測(cè)試、安全測(cè)試等。
學(xué)習(xí)不要孤軍奮戰(zhàn),最好是能抱團(tuán)取暖,相互成就一起成長(zhǎng),群眾效應(yīng)的效果是非常強(qiáng)大的,大家一起學(xué)習(xí),一起打卡,會(huì)更有學(xué)習(xí)動(dòng)力,也更能堅(jiān)持下去。你可以加入我們的測(cè)試技術(shù)交流扣扣群:914172719(里面有各種軟件測(cè)試資源和技術(shù)討論)
喜歡軟件測(cè)試的小伙伴們,如果我的博客對(duì)你有幫助、如果你喜歡我的博客內(nèi)容,請(qǐng) “點(diǎn)贊” “評(píng)論” “收藏” 一鍵三連哦!
轉(zhuǎn)行面試,跳槽面試,軟件測(cè)試人員都必須知道的這幾種面試技巧!
面試經(jīng):一線城市搬磚!又面軟件測(cè)試崗,5000就知足了…
面試官:工作三年,還來(lái)面初級(jí)測(cè)試?恐怕你的軟件測(cè)試工程師的頭銜要加雙引號(hào)…
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/123209.html
摘要:我覺得了解簡(jiǎn)歷和面試的技巧可以幫助你更好的去學(xué)習(xí)重要的知識(shí)點(diǎn)以及更好地去準(zhǔn)備面試以及面試,說(shuō)實(shí)話,我個(gè)人覺得這些東西還挺重要的。在本文里,我將介紹我這段時(shí)間里更新簡(jiǎn)歷和面試的相關(guān)經(jīng)歷。 分享一篇很不錯(cuò)的文章!本文作者曾經(jīng)寫過(guò)《Java Web輕量級(jí)開發(fā)面試教程》和 《Java核心技術(shù)及面試指南》這兩本書。我覺得了解簡(jiǎn)歷和面試的技巧可以幫助你更好的去學(xué)習(xí)重要的知識(shí)點(diǎn)以及更好地去準(zhǔn)備面試以...
摘要:文件完整性監(jiān)測(cè)持續(xù)監(jiān)控您的云服務(wù)器,保護(hù)重要的系統(tǒng)二進(jìn)制文件和配置文件不會(huì)受到未經(jīng)授權(quán)的或惡意的變更。首先會(huì)記錄下云服務(wù)器系統(tǒng)的清潔狀態(tài),作為基準(zhǔn)。您可以通過(guò)一個(gè)在線管理控制臺(tái),監(jiān)控所有的云服務(wù)器。 DEVSECOPS 所面臨的挑戰(zhàn) 敏捷開發(fā)和 DevOps 方法的出現(xiàn)使軟件開發(fā)的速度與質(zhì)量都有所提升,但它們不經(jīng)意地也為安全機(jī)構(gòu)增壓不少。從前的安全策略是基于靜態(tài)數(shù)據(jù)的,而在產(chǎn)品上線前才...
摘要:緣起我們公司要與團(tuán)隊(duì)進(jìn)入了公司,要與公司共同開發(fā)一個(gè)項(xiàng)目,當(dāng)然這個(gè)項(xiàng)目中,是基于微服務(wù)組件化進(jìn)行開發(fā)。大多就是一個(gè)項(xiàng)目進(jìn)度相關(guān)的。正常因?yàn)閷儆谕獍敲垂ぷ髦茟?yīng)當(dāng)按照公司的有次周五晚上,點(diǎn)半走了,被公司舉報(bào)。 ...
摘要:場(chǎng)景為了多維度掌控嫌疑犯的犯罪特征數(shù)據(jù),你警署最高長(zhǎng)官想要獲取并實(shí)時(shí)監(jiān)控張三的貸款數(shù)額存貸比存款和貸款兩者比率的變化。 ================前言=================== 初衷:以系列故事的方式展現(xiàn) MobX 源碼邏輯,盡可能以易懂的方式講解源碼; 本系列文章: 《【用故事解讀 MobX源碼(一)】 autorun》 《【用故事解讀 MobX源碼(二)】...
閱讀 1370·2021-11-22 09:34
閱讀 2581·2021-11-12 10:36
閱讀 1111·2021-11-11 16:55
閱讀 2324·2020-06-22 14:43
閱讀 1457·2019-08-30 15:55
閱讀 1975·2019-08-30 15:53
閱讀 1764·2019-08-30 10:50
閱讀 1217·2019-08-29 12:15