網(wǎng)站性能檢測評分
注:本網(wǎng)站頁面html檢測工具掃描網(wǎng)站中存在的基本問題,僅供參考。
python用于測試
4個不錯的Python自動化測試框架,Robot Framework有哪些優(yōu)勢? 流量視頻課程
隨著技術(shù)的進(jìn)步和自動化技術(shù)的出現(xiàn),市面上出現(xiàn)了一些自動化測試框架。只需要進(jìn)行一些適用性和效率參數(shù)的調(diào)整,這些自動化測試框架就能夠開箱即用,大大節(jié)省了測試時間。而且由于這些框架被廣泛使用,他們具有很好的健壯性,并且具有廣泛多樣的用例集和技術(shù)來輕易發(fā)現(xiàn)微小的缺陷。
以前,測試團(tuán)隊接手一個項目,他們不得不為這個項目構(gòu)建一個自動化測試框架。一個測試框架應(yīng)該具有最佳的測試用例、假設(shè)(assumptions)、腳本和技術(shù)來運(yùn)行每一處代碼和模塊,從而發(fā)現(xiàn)代碼缺陷和不足。不同的項目需要不同的測試用例、假設(shè)和腳本,而這也是為什么會在這些測試中花費(fèi)大量時間。然而,現(xiàn)在令測試人員萬分高興的是,構(gòu)建自己的測試框架的日子終于結(jié)束了。今天,我們就聊一聊可用的 Python 自動化測試框架。
Robot Framework
鏈接:http://robotframework.org/
Robot Framework(RF)是用于驗收測試和驗收測試驅(qū)動開發(fā)(ATDD)的自動化測試框架。 基于 Python 編寫,但也可以在 Jython(Java)和 IronPython(.NET) 上運(yùn)行,提供跨平臺支持( Windows、 Linux 或 MacOS )。
優(yōu)點(diǎn):
通過使用關(guān)鍵字驅(qū)動測試(KDT)方法簡化了自動化測試過程,方便測試人員創(chuàng)建易讀的測試。
測試數(shù)據(jù)語法簡單易用。
生態(tài)系統(tǒng)豐富。由各種通用測試庫和工具組成,這些工具都是作為獨(dú)立項目開發(fā)的。
具有高度可擴(kuò)展性。
可通過 pabot 或 Selenium Grid 執(zhí)行并行測試。
缺點(diǎn):
自定義 HTML 報告較為麻煩。
如果是針對大范圍的庫和擴(kuò)展的 KDT 自動化測試,建議使用此跨平臺框架。如果想要添加新的關(guān)鍵字(通過 RF 測試庫 API ),需要具備 Java / Python / C 語言的基礎(chǔ)知識。
RedwoodHQ
鏈接:http://redwoodhq/
RedwoodHQ 是一個流行的自動化測試工具,它之所以流行是因為大部分流行的編程語言都可以用來編寫測試,例如 Java、Python、C# 等。在 RedwoodHQ 的網(wǎng)站界面上,多個測試人員可以在一個平臺上協(xié)作并運(yùn)行測試用例。開發(fā)者可以使用 RedwoodHQ 中出現(xiàn)的 action 關(guān)鍵字來毫不費(fèi)力地創(chuàng)建和修改測試用例。
你需要做的只是找到需要的 action,拖到測試盒中,然后輸入?yún)?shù)并改變它們的值來生成一份完整的測試報告。RedwoodHQ 有一個內(nèi)置的 IDE(集成開發(fā)環(huán)境),可以在那里創(chuàng)建、修改以及運(yùn)行測試用例。RedwoodHQ 是對用戶最友好或?qū)y試人員最友好的平臺之一,它關(guān)注一個重大項目的全部測試過程。
Jasmine
鏈接:https://jasmine.github.io/
Jasmine 是一個 JavaScript 單元測試框架, 也被稱為 JavaScript 的行為驅(qū)動開發(fā)(BDD)測試框架。適用于網(wǎng)頁、Node.js 項目或任何可以運(yùn)行 JavaScript 的地方。它主要與 AngularJS 配對使用。
優(yōu)點(diǎn):
除了 JavaScript ,還可以運(yùn)行在 Python 和 Ruby 中。如果想在你的服務(wù)器端運(yùn)行客戶端測試,它可以幫助你。
被許多 CIs 使用和支持。
內(nèi)置用于斷言的語法。
缺點(diǎn):
多數(shù)情況下,它需要一個測試運(yùn)行器(如 Karma )。
難以異步測試。
如果你正在尋找一個統(tǒng)一的(客戶端 - 服務(wù)器)單元測試解決方案,Jasmin 可能會非常適合。
Pytest
鏈接:https://docs.pytest.org/en/latest/
如果你的項目比較小、復(fù)雜度比較低,Pytest 是最適合的自動化測試平臺。pytest 是 python 的一種單元測試框架,與 python 自帶的 unittest 測試框架類似,但是比 unittest 框架使用起來更簡潔,效率更高。根據(jù) pytest 的官方網(wǎng)站介紹,它具有如下特點(diǎn):
非常容易上手,入門簡單,文檔豐富,文檔中有很多實例可以參考
能夠支持簡單的單元測試和復(fù)雜的功能測試
支持參數(shù)化
執(zhí)行測試過程中可以將某些測試跳過,或者對某些預(yù)期失敗的 case 標(biāo)記成失敗
支持重復(fù)執(zhí)行失敗的 case
支持運(yùn)行由 nose , unittest 編寫的測試 case
具有很多第三方插件,并且可以自定義擴(kuò)展
方便的和持續(xù)集成工具集成
Pytest 還有各種可用插件來給現(xiàn)有測試技術(shù)和測試用例增加更多功能和多樣性。事實上,在其活躍社區(qū)中有 300 多個可用的插件。該平臺設(shè)計用于編寫更簡單,錯誤率更小的代碼。你可以將 Pytest 與諸如 Selenium 和 Splinter 之類的圖形用戶界面一起使用,來使測試工作更輕松。
結(jié)語
對于任何編程語言來說,都沒有絕對理想的測試框架。它取決于測試者的舒適度、項目需求和項目中特定模塊所需的測試類型??捎玫淖詣踊瘻y試框架有線性自動化、基于模塊的測試、函數(shù)庫框架測試、混合測試、關(guān)鍵詞驅(qū)動和數(shù)據(jù)驅(qū)動測試等。每個框架都有它的優(yōu)點(diǎn)和缺點(diǎn)。上面列舉的 python 框架是性能最全面的自動化測試框架。
關(guān)注51Testing軟件測試網(wǎng),提升it技能,從不會到熟練只差一步。
教你在Python中用Scikit生成測試數(shù)據(jù)集(附代碼、學(xué)習(xí)資料) 公司視頻課程
原文標(biāo)題:How to Generate Test Datasets in Python with Scikit-learn
作者:Jason Brownlee
翻譯:笪潔瓊
校對:顧佳妮
本文共1754字,建議閱讀3分鐘。
本文教大家在測試數(shù)據(jù)集中發(fā)現(xiàn)問題以及在Python中使用scikit學(xué)習(xí)的方法。
測試數(shù)據(jù)集是一個小型的人工數(shù)據(jù)集,它可以讓你測試機(jī)器學(xué)習(xí)算法或其它測試工具。
測試數(shù)據(jù)集的數(shù)據(jù)具有定義明確的性質(zhì),如線性或非線性,這允許您探索特定的算法行為。
scikit-learn Python庫提供了一組函數(shù),用于從結(jié)構(gòu)化的測試問題中生成樣本,用于進(jìn)行回歸和分類。
在本教程中,您將發(fā)現(xiàn)測試問題以及如何在Python中使用scikit學(xué)習(xí)。
完成本教程后,您將知道:
如何生成多分類預(yù)測問題
如何生成二分類預(yù)測問題
如何生成線性回歸預(yù)測測試問題
讓我們開始吧
教程概述
本教程分為三個部分,分別是:
測試數(shù)據(jù)集
分類測試問題
回歸測試的問題
測試數(shù)據(jù)集
開發(fā)和實現(xiàn)機(jī)器學(xué)習(xí)算法遇到的問題是,您如何知道是否正確地實現(xiàn)了機(jī)器學(xué)習(xí)算法。
即使存在bug有些算法還是能執(zhí)行。
測試數(shù)據(jù)集是一個較小的人為設(shè)計問題,它允許您測試和調(diào)試算法和測試工具。
它們還能幫助更好地理解算法的行為,以及超參數(shù)是如何在相應(yīng)算法的執(zhí)行過程進(jìn)行改變的。
下面是測試數(shù)據(jù)集的一些理想屬性:
它們可以快速且容易地生成。
它們包含“已知”或“理解”的結(jié)果與預(yù)測相比較。
它們是隨機(jī)的,每次生成時都允許對同一個問題進(jìn)行隨機(jī)變量的變化。
它們很小,可以很容易在兩個維度中進(jìn)行可視化。
它們也可以被簡單地放大。
我建議在開始使用新的機(jī)器學(xué)習(xí)算法或開發(fā)新的測試工具時使用測試數(shù)據(jù)集。
scikit-learn是一個用于機(jī)器學(xué)習(xí)的Python庫,它提供了生成一系列測試問題的功能。
在本教程中,我們將介紹一些為分類和回歸算法生成測試問題的例子。
分類測試問題
分類是把標(biāo)簽分配給觀測樣本的問題。
在這一節(jié)中,我們將討論三種分類問題:斑點(diǎn)、月亮和圓圈。
斑點(diǎn)分類問題
make_blob()函數(shù)可用于生成高斯分布的點(diǎn)。
您可以控制生成多少個斑點(diǎn),以及生成的樣本數(shù)量,以及其他一些屬性。
如果這些斑點(diǎn)有線性可分的性質(zhì),那么這個問題適用于線性分類問題。
下面的例子生成一個帶有三類斑點(diǎn)的二維數(shù)據(jù)集,作為一個多類分類預(yù)測問題。
每個觀察都有兩個輸入和0、1或2個類值。
完整代碼如下
運(yùn)行這個示例會生成問題的輸入和輸出,然后創(chuàng)建一個方便的2D繪圖,用不同的顏色顯示不同的類。
注意,由于問題生成器的隨機(jī)特性,您的特定數(shù)據(jù)集和結(jié)果圖將會有所不同。
這是一個特性,而不是一個bug。
測試分類問題的散點(diǎn)圖
我們將在下面的示例中使用這個相同的示例結(jié)構(gòu)。
衛(wèi)星分類問題
make_moons()函數(shù)是用于二分類問題的的,它將生成像漩渦一樣,或者像月亮形狀一樣的數(shù)據(jù)集。
你可以控制月亮的形狀和產(chǎn)生的樣本數(shù)量。
這個測試問題適用于能夠?qū)W習(xí)非線性類邊界的算法。
下面的例子產(chǎn)生了一個帶有中等噪聲的月球數(shù)據(jù)集。
完整的代碼如下
運(yùn)行該示例將生成并繪制用于檢查的數(shù)據(jù)集,再次為其指定的類著色。
衛(wèi)星測試分類問題散的點(diǎn)圖
圈分類問題
make_circles()函數(shù)會產(chǎn)生一個二分類問題,這個問題會出現(xiàn)在一個同心圓中。
再一次,就像衛(wèi)星測試的問題一樣,你可以控制形狀中噪音的大小。
該測試問題適用于能夠?qū)W習(xí)復(fù)雜非線性曲線的算法。
下面的示例生成一個帶有一些噪聲的圓形數(shù)據(jù)集。
完整的代碼如下
運(yùn)行該示例將生成并繪制用于檢查的數(shù)據(jù)集。
圓試驗分類問題的散點(diǎn)問題
回歸測試的問題
回歸是預(yù)測某個觀測量的問題。
make_regression()函數(shù)將創(chuàng)建一個帶有輸入和輸出之間線性關(guān)系的數(shù)據(jù)集。
您可以配置示例的數(shù)量、輸入特性的數(shù)量、噪聲級別,等等。
這個數(shù)據(jù)集適用于能夠?qū)W習(xí)線性回歸函數(shù)的算法。
下面的示例將生成100個示例,其中包含一個輸入特性和一個輸出特性,它的噪聲很低。
完整的代碼如下。
運(yùn)行該示例將生成數(shù)據(jù),并繪制X和y關(guān)系圖,由于該關(guān)系是線性的,因此非常無趣。
回歸測試問題的散點(diǎn)圖
延伸
本節(jié)列出了一些擴(kuò)展您可能希望探索的教程的想法。
比較算法
選擇一個測試問題,并對問題的算法進(jìn)行比較,并報告性能。
擴(kuò)大的問題
選擇一個測試問題,并探索擴(kuò)大它的規(guī)模,使用改進(jìn)的方法來可視化結(jié)果,或者探索給定的算法的模型技巧和問題深度。
額外的問題
這個庫提供了一系列額外的測試問題;
為每個人編寫一個代碼示例來演示它們是如何工作的。
如果您探究這些擴(kuò)展的任何一個,我很想知道。
進(jìn)一步的閱讀
如果您希望深入研究,本節(jié)將提供更多關(guān)于主題的參考資料。
學(xué)習(xí)用戶指南:數(shù)據(jù)集加載實用程序(http://scikit-learn.org/stable/datasets/index.html)
scikit-learn API:sklearn - 數(shù)據(jù)集(http://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets)
總結(jié)
在本教程中,您發(fā)現(xiàn)了測試問題,以及如何在Python中使用scikit庫。
具體來說,你學(xué)會了:
如何生成多分類預(yù)測問題
如何生成二分類預(yù)測問題
如何生成線性回歸預(yù)測測試問題
目標(biāo)檢測必須要OpenCV?10行Python代碼也能實現(xiàn),親測好用! 流量視頻課程
大數(shù)據(jù)文摘出品
編譯:朱一輝、雪清、小魚
短短10行代碼就可以實現(xiàn)目標(biāo)檢測?!
本文作者和他的團(tuán)隊構(gòu)建了一個名為ImageAI 的Python庫,集成了現(xiàn)今流行的深度學(xué)習(xí)框架和計算機(jī)視覺庫。本文將手把手教你構(gòu)建自己的第一個目標(biāo)檢測應(yīng)用,而且文摘菌已經(jīng)幫你踩過坑了,親測有效!
無人超市、人臉識別、無人駕駛,眾多的使用場景及案例,使得【目標(biāo)檢測】正成為計算機(jī)視覺最有前景的方向。
聽起來似乎是個很難實現(xiàn)的技術(shù),需要大量訓(xùn)練數(shù)據(jù)和算法才能完成。事實上,本文作者開發(fā)了一個基于Python的函數(shù)庫,可以用十行代碼高效實現(xiàn)目標(biāo)檢測。
還不熟悉的讀者,我們先來看看,目標(biāo)檢測到底是什么,以及軟件開發(fā)人員面臨的挑戰(zhàn)。
目標(biāo)檢測是借助于計算機(jī)和軟件系統(tǒng)在圖像/場景中,定位目標(biāo)并識別出每個目標(biāo)的類別的技術(shù)。目前已廣泛用于人臉檢測、車輛檢測、行人計數(shù)、網(wǎng)絡(luò)圖像、安全系統(tǒng)和無人駕駛汽車等領(lǐng)域。隨著計算機(jī)技術(shù)不斷發(fā)展和軟件開發(fā)人員的不懈努力,未來目標(biāo)檢測技術(shù)將更廣泛的普及開來。
在應(yīng)用程序和系統(tǒng)中使用先進(jìn)的目標(biāo)檢測方法,以及基于這些方法構(gòu)建新的應(yīng)用程序并不容易。早期目標(biāo)檢測是基于經(jīng)典算法而實現(xiàn)的,如 OpenCV(廣受歡迎的計算機(jī)視覺庫)所支持的一些算法。然而,這些經(jīng)典算法的性能會因條件而受到限制。
2012年,深度學(xué)習(xí)領(lǐng)域取得眾多突破,學(xué)者們提出了一系列全新、高精度的目標(biāo)檢測算法和方法,比如R-CNN, Fast-RCNN, Faster-RCNN, RetinaNet,以及既快又準(zhǔn)的SSD和YOLO等。要使用這些基于深度學(xué)習(xí)的方法和算法(當(dāng)然深度學(xué)習(xí)也是基于機(jī)器學(xué)習(xí)),需要對數(shù)學(xué)和深度學(xué)習(xí)框架有很深的理解。數(shù)百萬的軟件開發(fā)人員致力于整合目標(biāo)檢測技術(shù)進(jìn)行新產(chǎn)品的開發(fā)。但是想要理解這項技術(shù)并加以使用,對非深度學(xué)習(xí)領(lǐng)域的程序員來說并不容易。
一位自學(xué)了計算機(jī)的開發(fā)者M(jìn)oses Olafenwa在幾個月前意識到了這個問題,并與同伴一起開發(fā)了一個名叫ImageAI的Python函數(shù)庫。
ImageAI可以讓程序員和軟件開發(fā)者只用幾行代碼,就能輕易地把最先進(jìn)的計算機(jī)視覺技術(shù)整合到他們現(xiàn)有的以及新的應(yīng)用程序里面。
用ImageAI實現(xiàn)目標(biāo)檢測,你只需要以下步驟:
1. 安裝Python
2. 安裝ImageAI和相關(guān)函數(shù)庫
3. 下載目標(biāo)檢測模型文件
4. 運(yùn)行示例代碼(只有10行)
準(zhǔn)備工作
文摘菌測試環(huán)境為Windows 64位系統(tǒng),Python版本為3.6。關(guān)注大數(shù)據(jù)文摘微信公眾號,在后臺回復(fù)“檢測”可獲取代碼和模型文件~
1) 從Python官網(wǎng)下載并安裝Python 3,并安裝pip。
下載地址:
https://python.org
https://pip.pypa.io/en/stable/installing/
2)用pip安裝下列依賴
找到Pyhthon安裝目錄下的Scripts文件夾,如C:\XXX \Python\Python36\Scripts,打開cmd命令窗口,依次輸入下列安裝命令即可。
1. Tensorflow:
pip install tensorflow
2.Numpy:
pip install numpy
3.SciPy
pip install scipy
4.OpenCV
pip install opencv-python
5.Pillow
pip install pillow
6.Matplotlib
pip install matplotlib
7. H5py
pip install h5py
8. Keras
pip install keras
9. ImageAI
pip install https://github/OlafenwaMoses/ImageAI/releases/download/2.0.1/imageai-2.0.1-py3-none-any.whl
注:在安裝ImageAI時如果出現(xiàn)異常,可先下載.whl文件,并放在Scripts文件夾下,用下列命令進(jìn)行安裝:
pip install imageai-2.0.1-py3-none-any.whl
3) 下載用于目標(biāo)檢測的RetinaNet模型文件:
下載地址:
https://github/OlafenwaMoses/ImageAI/releases/download/1.0/resnet50_coco_best_v2.0.1.h5
準(zhǔn)備工作到此結(jié)束,你可以寫自己的第一個目標(biāo)檢測代碼了。新建一個Python文件并命名(如FirstDetection.py),然后將下述代碼寫入此文件。接著將RetinaNet模型文件、FirstDetection.py和你想檢測的圖片放在同一路徑下,并將圖片命名為“image.jpg”。
下面是FirstDetection.py中的10行代碼:
from imageai.Detection import ObjectDetectionimport osexecution_path = os.getcwd()detector = ObjectDetection()detector.setModelTypeAsRetinaNet()detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5"))detector.loadModel()detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "image.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg"))for eachObject in detections:print(eachObject["name"] + " : " + eachObject["percentage_probability"] )
然后,雙擊FirstDetection.py運(yùn)行代碼,并稍等片刻,識別結(jié)果就會在控制臺打印出來。一旦結(jié)果在控制臺輸出,在包含F(xiàn)irstDetection.py的文件夾里,你會發(fā)現(xiàn)一張新保存的圖片,文件名為“imagenew.jpg”。
注:如果運(yùn)行代碼時出現(xiàn)下列異常:
則需要安裝Numpy+MKL依賴,下載對應(yīng)的.whl文件并放在Scripts文件夾下,用pip安裝.whl文件即可。
下載地址:
https://lfd.uci.edu/~gohlke/pythonlibs/#numpy
檢測結(jié)果
來看看下面這2張示例圖片以及經(jīng)過檢測后保存的新圖片。
檢測前:
檢測后:
檢測結(jié)果:
person : 55.8402955532074
person : 53.21805477142334
person : 69.25139427185059
person : 76.41745209693909
bicycle : 80.30363917350769
person : 83.58567953109741
person : 89.06581997871399
truck : 63.10953497886658
person : 69.82483863830566
person : 77.11606621742249
bus : 98.00949096679688
truck : 84.02870297431946
car : 71.98476791381836
檢測結(jié)果:
person : 71.10445499420166
person : 59.28672552108765
person : 59.61582064628601
person : 75.86382627487183
motorcycle : 60.1050078868866
bus : 99.39600229263306
car : 74.05484318733215
person : 67.31776595115662
person : 63.53200078010559
person : 78.2265305519104
person : 62.880998849868774
person : 72.93365597724915
person : 60.01397967338562
person : 81.05944991111755
motorcycle : 50.591760873794556
motorcycle : 58.719027042388916
person : 71.69321775436401
bicycle : 91.86570048332214
motorcycle : 85.38855314254761
文摘菌測試了另外幾張圖片,結(jié)果如下:
檢測前:
檢測后:
檢測結(jié)果:
car : 59.04694199562073
car : 50.62631368637085
car : 71.59191966056824
car : 52.60368585586548
person : 76.51243805885315
car : 56.73831105232239
car : 50.02853870391846
car : 94.18612122535706
car : 70.23521065711975
car : 75.06842017173767
car : 87.21032738685608
car : 89.46954607963562
person : 73.89532923698425
bicycle : 90.31689763069153
bus : 65.3587281703949
竟然可以檢測出?!?/p>
檢測結(jié)果:
person : 55.15214800834656
person : 62.79672980308533
person : 69.01599168777466
person : 67.26776957511902
person : 75.51649808883667
person : 52.9820442199707
person : 67.23594665527344
person : 69.77047920227051
person : 83.80664587020874
person : 61.785924434661865
person : 82.354336977005
person : 93.08169484138489
cow : 84.69656705856323
檢測結(jié)果:
person : 65.07909297943115
person : 65.68368077278137
person : 68.6377465724945
person : 83.80006551742554
person : 85.69389581680298
person : 55.40691018104553
person : 56.62997364997864
person : 58.07020664215088
person : 70.90385556221008
person : 95.06895542144775
代碼解釋
下面我們來解釋一下這10行代碼的含義。
from imageai.Detection import ObjectDetectionimport osexecution_path = os.getcwd()
上面3行代碼中,第一行導(dǎo)入ImageAI的目標(biāo)檢測類,第二行導(dǎo)入Python的os類,第三行定義一個變量,用來保存Python文件、RetianNet模型文件和圖片所在文件夾的路徑。
detector = ObjectDetection()detector.setModelTypeAsRetinaNet()detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5"))detector.loadModel()detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "image.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg"))
上面5行代碼中,第一行定義目標(biāo)檢測類,第二行將模型類型設(shè)置為RetinaNet,第三行將模型的路徑設(shè)為RetinaNet模型文件所在路徑,第四行將模型載入目標(biāo)檢測類,然后第五行調(diào)用檢測函數(shù),并解析輸入圖片和輸出圖片的路徑。
for eachObject in detections:print(eachObject["name"] + " : " + eachObject["percentage_probability"] )
上面2行代碼中,第一行迭代所有detector.detectObjectsFromImage函數(shù)返回的結(jié)果,然后,第二行打印出模型檢測出的圖片中每個目標(biāo)的類型和概率。
ImageAI還支持配置目標(biāo)檢測過程中的其他功能。例如,將檢測到的每個目標(biāo)的圖片單獨(dú)提取出來。通過簡單地把extract_detected_objects=True寫入detectObjectsFromImage函數(shù),目標(biāo)檢測類就會為圖片對象集新建一個文件夾,然后提取出每個圖片,將它們存入這個文件夾,并返回一個數(shù)組用來保存每個圖片的路徑,如下所示:
detections, extracted_images = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "image.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg"), extract_detected_objects=True)
我們用第一個示例圖片提取出來的檢測結(jié)果如圖所示:
參數(shù)配置
為了滿足目標(biāo)檢測的生產(chǎn)需求,ImageAI提供了一些可配置的參數(shù),包括:
Adjusting Minimum Probability(可調(diào)整最小概率閾值)
默認(rèn)閾值為50%,如果檢測結(jié)果的概率值低于50%,則不顯示檢測結(jié)果。你可以根據(jù)具體需求對該閾值進(jìn)行修改。
Custom Objects Detection(自定義目標(biāo)檢測)
使用提供的CustomObject類,你可以讓檢測結(jié)果只顯示特定類型的目標(biāo)。
Detection Speeds(檢測速度)
可以將檢測速度設(shè)置為“fast”、“ faster”和“fastest”,以減少檢測圖片所需的時間。
Input Types(輸入類型)
你可以解析并修改圖像的文件路徑,其中,Numpy數(shù)組,或是圖片文件流都可以作為輸入類型。
Output Types(輸出類型)
你可以修改detectObjectsFromImage 函數(shù)的返回結(jié)果,例如返回圖片文件或Numpy數(shù)組。
詳細(xì)的說明文檔在GitHub上,GitHub鏈接:
https://github/OlafenwaMoses/ImageAI
關(guān)注大數(shù)據(jù)文摘微信公眾號,在后臺回復(fù)“檢測”可獲取代碼和模型文件~
動手試試吧,歡迎在留言區(qū)分享~
Python功能不夠多?來看看如何生成測試數(shù)據(jù)集吧! 推廣視頻課程
測試數(shù)據(jù)集是小型的專用數(shù)據(jù)集,它可以讓你測試一個機(jī)器學(xué)習(xí)算法或測試工具。數(shù)據(jù)集中的數(shù)據(jù)有完整的定義(例如線性或非線性)使你可以探索特定的算法行為。scikit-learn Python 庫提供一套函數(shù),用于從可配置測試問題中生成樣本來進(jìn)行回歸和分類
在本教程中,你將學(xué)習(xí)測試問題及如何在 Python 中使用 scikit-learn 進(jìn)行測試。
完成本教程后,你將知道:
如何生成多類分類預(yù)測測試問題如何生成二進(jìn)制分類預(yù)測測試問題如何生成線性回歸預(yù)測測試問題
讓我們開始吧。
教程概述
本教程被分成了 3 個部分,他們分別是:
1. 測試數(shù)據(jù)集
2. 分類測試問題
3. 回歸測試問題
測試數(shù)據(jù)集
開發(fā)和實現(xiàn)機(jī)器學(xué)習(xí)算法時的一個問題是如何知道你是否已經(jīng)正確實現(xiàn)了他們——它們似乎在有 bug 時也能工作。
測試數(shù)據(jù)集是小型設(shè)計問題,它能讓你測試、調(diào)試算法和測試工具。它們對于更好地理解算法響應(yīng)超參數(shù)變化的行為方面也很有用。
下面是測試數(shù)據(jù)集的一些理想特性:
它們可以快速、容易地生成。它們包含「已知」或「理解」的結(jié)果來和預(yù)測進(jìn)行比較。它們是隨機(jī)的,每次生成時都允許在同一個問題上隨機(jī)變化。它們很小、容易在而二維中實現(xiàn)可視化。它們可以被增大。
我建議在開始一個新的機(jī)器學(xué)習(xí)算法或開發(fā)一個新的測試工具時使用測試數(shù)據(jù)集。scikit-learn 是一個用于機(jī)器學(xué)習(xí)的 Python 庫,它提供了生成一組測試問題的函數(shù)。
在本教程中,我們將看一些為分類和回歸算法生成測試問題的例子。
分類測試問題
分類是將標(biāo)簽分配給數(shù)據(jù)的問題。在本節(jié)中,我們將看三個分類問題:blobs、moons 和 circles。
Blobs 分類問題
make_blobs() 函數(shù)可被用于生成具有高斯分布的 blobs 點(diǎn)。你可以控制生成 blobs 的數(shù)量,生成樣本的數(shù)量以及一系列其他屬性。考慮到 blobs 的線性可分性質(zhì),該問題也適用于線性分類問題。
下面的例子是一個多類分類預(yù)測問題,它生成了一個具有三個 blobs 的 2D 樣本數(shù)據(jù)集。每個數(shù)據(jù)有兩個輸入和 0、1 或 2 個類的值。
# generate 2d classification dataset
X, y = make_blobs(n_samples=100, centers=3, n_features=2)
完整的例子如下所示。
from sklearn.datasets.samples_generator import make_blobs
from matplotlib import pyplot
from pandas import DataFrame
# generate 2d classification dataset
X, y = make_blobs(n_samples=100, centers=3, n_features=2)
# scatter plot, dots colored by class value
df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y))
colors = {0:'red', 1:'blue', 2:'green'}
fig, ax = pyplot.subplots()
grouped = df.groupby('label')
for key, group in grouped:
group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key])
pyplot.show()
運(yùn)行該示例將生成該問題的輸入和輸出,然后創(chuàng)建一個方便的 2D 圖,用不同的顏色顯示不同類的點(diǎn)。注意,考慮到問題生成器的隨機(jī)特性,你的特定數(shù)據(jù)集和結(jié)果圖會有所不同。這是一個特點(diǎn),而不是一個錯誤。
Blobs 測試分類問題的散點(diǎn)圖
我們將會在下面的例子中使用相同的示例結(jié)構(gòu)。
Moons 分類問題
make_moons() 函數(shù)用于二進(jìn)制分類并且將生成一個漩渦模式,或者兩個 moons。你可以控制 moon 形狀中的噪聲量,以及要生產(chǎn)的樣本數(shù)量。
這個測試問題適用于能夠?qū)W習(xí)非線性類邊界的算法。下面的例子生成了一個中等噪音的 moon 數(shù)據(jù)集
# generate 2d classification dataset
X, y = make_moons(n_samples=100, noise=0.1)
完整的例子如下所示。
from sklearn.datasets import make_moons
from matplotlib import pyplot
from pandas import DataFrame
# generate 2d classification dataset
X, y = make_moons(n_samples=100, noise=0.1)
# scatter plot, dots colored by class value
df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y))
colors = {0:'red', 1:'blue'}
fig, ax = pyplot.subplots()
grouped = df.groupby('label')
for key, group in grouped:
group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key])
pyplot.show()
運(yùn)行該示例會生成并繪制數(shù)據(jù)集以供查閱,然后再按照指定的類對樣本著色。
Moons 測試分類問題的散點(diǎn)圖
Circles 分類問題
make_circles() 函數(shù)生成一個數(shù)據(jù)集落入同心圓的二進(jìn)制分類問題。再一次地,與 moons 測試問題一樣,你可以控制形狀中的噪聲量。該測試問題適用于可以學(xué)習(xí)復(fù)雜的非線性流行的算法。下面的例子中生成了一個具有一定噪音的 circles 數(shù)據(jù)集
# generate 2d classification dataset
X, y = make_circles(n_samples=100, noise=0.05)
完整例子如下所示。
from sklearn.datasets import make_circles
from matplotlib import pyplot
from pandas import DataFrame
# generate 2d classification dataset
X, y = make_circles(n_samples=100, noise=0.05)
# scatter plot, dots colored by class value
df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y))
colors = {0:'red', 1:'blue'}
fig, ax = pyplot.subplots()
grouped = df.groupby('label')
for key, group in grouped:
group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key])
pyplot.show()
運(yùn)行該示例并繪制數(shù)據(jù)集以供查閱。
Circles 測試分類問題的散點(diǎn)圖
回歸測試問題
回歸是根據(jù)觀察數(shù)據(jù)預(yù)測數(shù)量的問題。make_regression() 函數(shù)將創(chuàng)建一個輸入和輸出具有線性關(guān)系的數(shù)據(jù)集。你可以配置樣本數(shù)量,輸入特征數(shù)量,噪聲級別等等。該數(shù)據(jù)集適用于可以學(xué)習(xí)線性回歸函數(shù)的算法。
下面的例子將生成 100 個示例,他們具有適度的噪聲,都有一個輸入特征和一個輸出特征。
# generate regression dataset
X, y = make_regression(n_samples=100, n_features=1, noise=0.1)
完整例子如下所示。
from sklearn.datasets import make_regression
from matplotlib import pyplot
# generate regression dataset
X, y = make_regression(n_samples=100, n_features=1, noise=0.1)
# plot regression dataset
pyplot.scatter(X,y)
pyplot.show()
運(yùn)行該示例將生成數(shù)據(jù)并繪制 x 和 y 的關(guān)系,考慮到它是線性的,所以結(jié)果是很簡單的。
回歸測試問題的散點(diǎn)圖
擴(kuò)展
本節(jié)列出了一些你可能想要探討的擴(kuò)展該教程的想法。
比較算法。選擇一個測試問題,并比較該問題的一系列算法并匯報性能。放大問題。選擇一個測試問題并探索將其放大,用級數(shù)法來可視化結(jié)果,也可以探索一個特定算法模型技能和問題規(guī)模。其他問題。庫提供了一套其他測試問題;為每個問題編寫了一個代碼示例來展示它們是如何工作的。
拓展閱讀
如果你想要更深入的了解,本節(jié)提供了關(guān)于該課題更多的資源。
scikit-learn 用戶指南: Dataset loading utilities (http://scikit-learn.org/stable/datasets/index.html)scikit-learn API: sklearn.datasets: Datasets (http://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets)
總結(jié)
在本教程中,我們學(xué)習(xí)了測試問題及如何用 scikit-learn 在 Python 中使用他們。
具體來說,其中包括:
如何生成多類分類預(yù)測測試問題;如何生成二進(jìn)制分類預(yù)測測試問題;如何生成線性回歸預(yù)測測試問題。
Python自定義HtmlTestRunner測試報告 營銷視頻課程
簡述
使用selenium webdriver + Python做自動化測試,執(zhí)行完成后要生成測試報告,Python我們使用的HTMLtestrunner 進(jìn)行生成,但是默認(rèn)提供的生成報告內(nèi)容,并不能滿足我們的需求,怎么才能讓測試報告數(shù)據(jù)更清晰,內(nèi)容更豐富呢。對于一些人來說,可能已經(jīng)重寫了報告生成方式,放棄使用HTMLtestrunner。但是對于python小白可能還做不到,只能用現(xiàn)有東西進(jìn)行展示,那么下面簡單介紹通過修改HTMLtestrunner去實現(xiàn)想要的內(nèi)容。
先通過兩張圖片對比一下我們將要實現(xiàn)的功能:
圖表 1
圖表 2
如圖所示,圖表1是原始樣式輸出,圖表2是修改后樣式輸出。通過對比我們可以看到,圖表2比圖表1多了首位部的兩列。我在第一行加caseid,用來記錄用例的編號,最后一列,添加了每一個用例執(zhí)行過程中關(guān)鍵步驟的截圖快照。
這樣做的好處:
有了用例編號我們可以通過用例ID進(jìn)行對用例的定位,尤其是對失敗用例的定位。有了用例執(zhí)行過程中關(guān)鍵位置截圖快照,對于失敗或者出錯異常的用例,在無人值守情況下進(jìn)行執(zhí)行用例時,可以進(jìn)行界面追蹤。實現(xiàn)
下面來介紹怎么實現(xiàn)的,首先先說一下我實現(xiàn)的思路。對于這個我們的測試報告而言,我只想調(diào)整一下他的展示樣式,豐富兩列內(nèi)容。所以先去想怎么去把他的樣式給修改了。然后再往修改后的樣式表格里面添加數(shù)據(jù)。
也就是分兩步做:
1改樣式
2加數(shù)據(jù)
改樣式
改樣式,這里只需要會基礎(chǔ)的HTML
就可以了。 |
Count | Pass | Fail | Error | View | Screenshot | %(test_list)s%(count)s | %(Pass)s | %(fail)s | %(error)s |
table標(biāo)簽中的第一個
Count Pass Fail Error View Screenshot //圖片快照的列頭標(biāo)題
REPORT_CLASS_TMPL = “”” … “””代碼段 是 展示calss的行,可以叫做測試模塊的類,它是單獨(dú)放在一行中的,每個模塊一行。因為要跟上面的第一行標(biāo)題中的列數(shù)對應(yīng),所以修改如下:
case_id %(desc)s %(count)s %(Pass)s %(fail)s %(error)s //保持列數(shù)統(tǒng)一,加入空白列腳本片段3:
REPORT_TEST_WITH_OUTPUT_TMPL = “”” … “”” 是測試用例展示部分代碼,這段內(nèi)容是展開測試模塊后進(jìn)行顯示的
REPORT_TEST_WITH_OUTPUT_TMPL = r"""
%(script)s
單從HTML界面樣式展示來看,上面所有代碼段中修改都是在每個
這樣我們的樣式就改完了。然后開始加入數(shù)據(jù)。
加數(shù)據(jù)
先想一下我們要加什么數(shù)據(jù).從樣式中看我們增加了兩個列,那么有兩列的數(shù)據(jù)是需要增加的,具體加什么呢?想一下?我們在改樣式的時候加的兩個列中使用到了變量,那么變量取值是需要實現(xiàn)的。那么首先定義變量。
定義報告輸出兩個變量的取值,放在 REPORT_TEST_OUTPUT_TMPL定義的下面:
腳本片段4:
REPORT_TEST_OUTPUT_TMPL = r"""%(id)s: %(output)s"""REPORT_TEST_OUTPUT_IMAGE = r"""%(screenshot)s"""REPORT_TEST_OUTPUT_CASEID = r"""%(case_id)s"""
然后找到 _generate_report_test 函數(shù),在這個函數(shù)中定義我們要替換html變量,并實現(xiàn)變量的取值。
腳本片段5:
script = self.REPORT_TEST_OUTPUT_TMPL % dict( id = tid, output = saxutils.escape(uo+ue), ) image = self.REPORT_TEST_OUTPUT_IMAGE % dict( screenshot = saxutils.escape(uo+ue)) caseid = self.REPORT_TEST_OUTPUT_CASEID % dict( case_id = saxutils.escape(uo+ue) ) row = tmpl % dict( tid = tid, Class = (n == 0 and'hiddenRow'or'none'), style = n == 2 and'errorCase'or (n == 1 and'failCase'or'none'), desc = desc, script = script, image = image[image.find("image"):(int(image.find("png"))+3)], caseid = caseid[caseid.find("case"):(int(caseid.find("case"))+9)], status = self.STATUS[n],)
上面 image 、caseid 字符串截取位置跟我在控制臺輸出的內(nèi)容有關(guān)系,所以不是通用的,需要自行修改。字符串截取的方式就不講了,方式很多種找自己合適的熟悉的就行。
至此修改HTMLtestrunner生成報告模板就修改結(jié)束,我的這個方式或許不是你想要的,不是你想展示的,希望能在思路上幫你去解決你的問題。
另:有朋友問能不能內(nèi)容顯示成中文的,看明白了上面內(nèi)容我想中文的顯示就不是什么問題了。直接改HTML標(biāo)簽中顯示的英文內(nèi)容翻譯為中文就可以了。
作者: Ray博客地址:聲明:本文已獲作者授權(quán)轉(zhuǎn)載,著作權(quán)歸作者所有。
Python下面那些相見恨晚的自動化測試庫 流量視頻課程
我們在日常工作中所有用于解決頻繁、重復(fù)操作的腳本、批處理、
測試框架
unittest – (Python 標(biāo)準(zhǔn)庫) 單元測試框架:
Unittest原名是PyUnit、是由java的JUnit衍生而來、對于單元測試、需要預(yù)先設(shè)置條件、然后對比預(yù)期結(jié)果和實際測試結(jié)果。
unittest庫:提供了test cases, test suites, test fixtures,test runner:
test case :通過繼承TestCase類,我們可以創(chuàng)建一個test,或者一組tests
test suites : 測試套件
test fixtures : setup + test case + teardown結(jié)構(gòu)
test runner
pytest- 一個成熟的全功能 Python 測試工具:
與python自帶的unittest測試框架類似,但是比unittest框架使用起來更簡潔,效率更高。根據(jù)pytest的官方網(wǎng)站介紹,它具有如下特點(diǎn):
非常容易上手,入門簡單,文檔豐富,文檔中有很多實例可以參考
能夠支持簡單的單元測試和復(fù)雜的功能測試
支持參數(shù)化
執(zhí)行測試過程中可以將某些測試跳過,或者對某些預(yù)期失敗的case標(biāo)記成失敗
支持重復(fù)執(zhí)行失敗的case
支持運(yùn)行由nose, unittest編寫的測試case
具有很多第三方插件,并且可以自定義擴(kuò)展
方便的和持續(xù)集成工具集成
Robot Framework – 一個通用的自動化測試框架。
Robot Framework是一款python編寫的功能自動化測試框架。具備良好的可擴(kuò)展性,支持關(guān)鍵字驅(qū)動,可以同時測試多種類型的客戶端或者接口,可以進(jìn)行分布式測試執(zhí)行。主要用于輪次很多的驗收測試和驗收測試驅(qū)動開發(fā)
測試用例使用文本文件(TXT或者TSV文件)保存,使用制表符分隔數(shù)據(jù)。可以方便的使用任何文本編輯器,或者EXCEL編輯測試用例。也可以使用HTML格式創(chuàng)建用例。
測試用例中支持變量使用,可以使用IF語句和FOR循環(huán)語句。
可以利用“標(biāo)簽”功能對測試用例進(jìn)行分類和有選擇執(zhí)行。
支持關(guān)鍵字驅(qū)動、數(shù)據(jù)驅(qū)動和行為驅(qū)動。
利用已有的關(guān)鍵字,測試人員可以創(chuàng)建自己需要的關(guān)鍵字,形成更高級別的行為。
測試執(zhí)行報告和日志是HTML格式,容易閱讀。
PyAutoGUI – PyAutoGUI 是一個人性化的跨平臺 GUI 自動測試模塊;
PyAutoGUI是用Python寫的一個模塊,使用它可以控制鼠標(biāo)和鍵盤。利用它可以實現(xiàn)自動化任務(wù),只要你人工能操作的都可以用PyAutoGui來完成自動化。
PyAutoGUI
可以模擬鼠標(biāo)的移動、點(diǎn)擊、拖拽
可以鍵盤按鍵輸入、按住操作,以及鼠標(biāo)+鍵盤的熱鍵同時按住
可以識別圖片、通過圖片來識別GUI上的按鈕位置并做出相應(yīng)的操作
Selenium – Selenium WebDriver 的 Python 綁定;
是一個用于Web應(yīng)用程序測試的工具。Selenium測試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE,Mozilla Firefox,Safari,Google Chrome,Opera等。這個工具的主要功能包括:測試與瀏覽器的兼容性——測試你的應(yīng)用程序看是否能夠很好得工作在不同瀏覽器和操作系統(tǒng)之上。測試系統(tǒng)功能——創(chuàng)建回歸測試檢驗軟件功能和用戶需求。支持自動錄制動作和自動生成 .Net、Java、Perl等不同語言的測試腳本。
框架底層使用JavaScript模擬真實用戶對瀏覽器進(jìn)行操作。測試腳本執(zhí)行時,瀏覽器自動按照腳本代碼做出點(diǎn)擊,輸入,打開,驗證等操作,就像真實用戶所做的一樣,從終端用戶的角度測試應(yīng)用程序。
使瀏覽器兼容性測試自動化成為可能,盡管在不同的瀏覽器上依然有細(xì)微的差別。
使用簡單,可使用Java,Python等多種語言編寫用例腳本。
Python——一個簡單的自動化測試框架 推廣視頻課程
這是檸檬班的第171篇文章
最近辦公室的開發(fā)哥哥,每天都囂張的很,說讓我弄死他。于是我本著善良助人的天性,來學(xué)習(xí)接口自動化,并準(zhǔn)備在他快下班的時候,給他多提幾十個bug。嗯,就是這樣,對的,沒錯
開始接口自動化首先,我們要選擇一門語言,測試人員的標(biāo)配,當(dāng)然是Python3,不要問為什么,簡單粗暴,上手快沒有基礎(chǔ)的同學(xué)可以先去學(xué)習(xí)一下python基礎(chǔ)。首推菜鳥教程和廖雪峰接下來我們看一下我們的接口自動化框架的主要構(gòu)成。嘿嘿嘿
接口自動化框架一共分為6個模塊common:公共模塊,包括配置和共用的代碼source:接口封裝的類test_case:存放單元測試用例test_data:存放測試數(shù)據(jù)(這里用的是Excel)test_report:存放測試報告的地址test_result:存放測試結(jié)果的地址
公共類首先開始編寫我們的公共類
HTTP類這里封裝了2個函數(shù),一個get請求,一個post請求,并以data形式返回測試結(jié)果
讀取配置文件的類其實就是為了把什么固定的ip地址,端口,數(shù)據(jù)庫連接信息啦放在配置文件里面,并通過類讀取調(diào)用,實現(xiàn)數(shù)據(jù)分離,更加靈活
讀取Excel的類將測試數(shù)據(jù)放在Excel中,通過Excel進(jìn)行數(shù)據(jù)管理,如下圖
存放測試數(shù)據(jù)然后通過Excel類讀取調(diào)用,這些就實現(xiàn)了Excel管理測試用例,然后想測什么接口,就直接在Excel里面加就行。想想都爽,成功的走向了,弄死同事的第一步。
這是我們的核心代碼
將測試結(jié)果寫入Excel,并生成HTML測試報告發(fā)送到郵箱,這樣,我們就可以坐在靠椅上,喝著咖啡,看著代碼,然后等著郵件,最后再提上一大堆bug,嗯,大概生活就是如此的美好
最后讓我們來執(zhí)行我們的main函數(shù)對,沒錯,真相只有一個。見證奇跡的時候到了,然后就會生成我們想要的測試報告和測試結(jié)果
主函數(shù)入口
執(zhí)行main的日志測試報告吶,一個嶄新的測試報告就這么出來了,驚不驚喜,意不意外。就這樣我們一起走向弄死同事的不歸路。(ps:其實我們還是很相親相愛的,當(dāng)然,是他死我活)
測試報告下次有時間會再聊上五毛錢的基于Jenkins持續(xù)集成自動化的實踐,當(dāng)然這都是自己瞎搗鼓的,有大神的,請留言,一起共同進(jìn)步。
Python功能不夠多?來看看如何生成測試數(shù)據(jù)集吧! 行業(yè)視頻課程
測試數(shù)據(jù)集是小型的專用數(shù)據(jù)集,它可以讓你測試一個機(jī)器學(xué)習(xí)算法或測試工具。數(shù)據(jù)集中的數(shù)據(jù)有完整的定義(例如線性或非線性)使你可以探索特定的算法行為。scikit-learn Python 庫提供一套函數(shù),用于從可配置測試問題中生成樣本來進(jìn)行回歸和分類
在本教程中,你將學(xué)習(xí)測試問題及如何在 Python 中使用 scikit-learn 進(jìn)行測試。
完成本教程后,你將知道:
如何生成多類分類預(yù)測測試問題如何生成二進(jìn)制分類預(yù)測測試問題如何生成線性回歸預(yù)測測試問題
讓我們開始吧。
教程概述
本教程被分成了 3 個部分,他們分別是:
1. 測試數(shù)據(jù)集
2. 分類測試問題
3. 回歸測試問題
測試數(shù)據(jù)集
開發(fā)和實現(xiàn)機(jī)器學(xué)習(xí)算法時的一個問題是如何知道你是否已經(jīng)正確實現(xiàn)了他們——它們似乎在有 bug 時也能工作。
測試數(shù)據(jù)集是小型設(shè)計問題,它能讓你測試、調(diào)試算法和測試工具。它們對于更好地理解算法響應(yīng)超參數(shù)變化的行為方面也很有用。
下面是測試數(shù)據(jù)集的一些理想特性:
它們可以快速、容易地生成。它們包含「已知」或「理解」的結(jié)果來和預(yù)測進(jìn)行比較。它們是隨機(jī)的,每次生成時都允許在同一個問題上隨機(jī)變化。它們很小、容易在而二維中實現(xiàn)可視化。它們可以被增大。
我建議在開始一個新的機(jī)器學(xué)習(xí)算法或開發(fā)一個新的測試工具時使用測試數(shù)據(jù)集。scikit-learn 是一個用于機(jī)器學(xué)習(xí)的 Python 庫,它提供了生成一組測試問題的函數(shù)。
在本教程中,我們將看一些為分類和回歸算法生成測試問題的例子。
分類測試問題
分類是將標(biāo)簽分配給數(shù)據(jù)的問題。在本節(jié)中,我們將看三個分類問題:blobs、moons 和 circles。
Blobs 分類問題
make_blobs() 函數(shù)可被用于生成具有高斯分布的 blobs 點(diǎn)。你可以控制生成 blobs 的數(shù)量,生成樣本的數(shù)量以及一系列其他屬性??紤]到 blobs 的線性可分性質(zhì),該問題也適用于線性分類問題。
下面的例子是一個多類分類預(yù)測問題,它生成了一個具有三個 blobs 的 2D 樣本數(shù)據(jù)集。每個數(shù)據(jù)有兩個輸入和 0、1 或 2 個類的值。
# generate 2d classification dataset
X, y = make_blobs(n_samples=100, centers=3, n_features=2)
完整的例子如下所示。
from sklearn.datasets.samples_generator import make_blobs
from matplotlib import pyplot
from pandas import DataFrame
# generate 2d classification dataset
X, y = make_blobs(n_samples=100, centers=3, n_features=2)
# scatter plot, dots colored by class value
df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y))
colors = {0:'red', 1:'blue', 2:'green'}
fig, ax = pyplot.subplots()
grouped = df.groupby('label')
for key, group in grouped:
group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key])
pyplot.show()
運(yùn)行該示例將生成該問題的輸入和輸出,然后創(chuàng)建一個方便的 2D 圖,用不同的顏色顯示不同類的點(diǎn)。注意,考慮到問題生成器的隨機(jī)特性,你的特定數(shù)據(jù)集和結(jié)果圖會有所不同。這是一個特點(diǎn),而不是一個錯誤。
Blobs 測試分類問題的散點(diǎn)圖
我們將會在下面的例子中使用相同的示例結(jié)構(gòu)。
Moons 分類問題
make_moons() 函數(shù)用于二進(jìn)制分類并且將生成一個漩渦模式,或者兩個 moons。你可以控制 moon 形狀中的噪聲量,以及要生產(chǎn)的樣本數(shù)量。
這個測試問題適用于能夠?qū)W習(xí)非線性類邊界的算法。下面的例子生成了一個中等噪音的 moon 數(shù)據(jù)集
# generate 2d classification dataset
X, y = make_moons(n_samples=100, noise=0.1)
完整的例子如下所示。
from sklearn.datasets import make_moons
from matplotlib import pyplot
from pandas import DataFrame
# generate 2d classification dataset
X, y = make_moons(n_samples=100, noise=0.1)
# scatter plot, dots colored by class value
df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y))
colors = {0:'red', 1:'blue'}
fig, ax = pyplot.subplots()
grouped = df.groupby('label')
for key, group in grouped:
group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key])
pyplot.show()
運(yùn)行該示例會生成并繪制數(shù)據(jù)集以供查閱,然后再按照指定的類對樣本著色。
Moons 測試分類問題的散點(diǎn)圖
Circles 分類問題
make_circles() 函數(shù)生成一個數(shù)據(jù)集落入同心圓的二進(jìn)制分類問題。再一次地,與 moons 測試問題一樣,你可以控制形狀中的噪聲量。該測試問題適用于可以學(xué)習(xí)復(fù)雜的非線性流行的算法。下面的例子中生成了一個具有一定噪音的 circles 數(shù)據(jù)集
# generate 2d classification dataset
X, y = make_circles(n_samples=100, noise=0.05)
完整例子如下所示。
from sklearn.datasets import make_circles
from matplotlib import pyplot
from pandas import DataFrame
# generate 2d classification dataset
X, y = make_circles(n_samples=100, noise=0.05)
# scatter plot, dots colored by class value
df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y))
colors = {0:'red', 1:'blue'}
fig, ax = pyplot.subplots()
grouped = df.groupby('label')
for key, group in grouped:
group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key])
pyplot.show()
運(yùn)行該示例并繪制數(shù)據(jù)集以供查閱。
Circles 測試分類問題的散點(diǎn)圖
回歸測試問題
回歸是根據(jù)觀察數(shù)據(jù)預(yù)測數(shù)量的問題。make_regression() 函數(shù)將創(chuàng)建一個輸入和輸出具有線性關(guān)系的數(shù)據(jù)集。你可以配置樣本數(shù)量,輸入特征數(shù)量,噪聲級別等等。該數(shù)據(jù)集適用于可以學(xué)習(xí)線性回歸函數(shù)的算法。
下面的例子將生成 100 個示例,他們具有適度的噪聲,都有一個輸入特征和一個輸出特征。
# generate regression dataset
X, y = make_regression(n_samples=100, n_features=1, noise=0.1)
完整例子如下所示。
from sklearn.datasets import make_regression
from matplotlib import pyplot
# generate regression dataset
X, y = make_regression(n_samples=100, n_features=1, noise=0.1)
# plot regression dataset
pyplot.scatter(X,y)
pyplot.show()
運(yùn)行該示例將生成數(shù)據(jù)并繪制 x 和 y 的關(guān)系,考慮到它是線性的,所以結(jié)果是很簡單的。
回歸測試問題的散點(diǎn)圖
擴(kuò)展
本節(jié)列出了一些你可能想要探討的擴(kuò)展該教程的想法。
比較算法。選擇一個測試問題,并比較該問題的一系列算法并匯報性能。放大問題。選擇一個測試問題并探索將其放大,用級數(shù)法來可視化結(jié)果,也可以探索一個特定算法模型技能和問題規(guī)模。其他問題。庫提供了一套其他測試問題;為每個問題編寫了一個代碼示例來展示它們是如何工作的。
拓展閱讀
如果你想要更深入的了解,本節(jié)提供了關(guān)于該課題更多的資源。
scikit-learn 用戶指南: Dataset loading utilities (http://scikit-learn.org/stable/datasets/index.html)scikit-learn API: sklearn.datasets: Datasets (http://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets)
總結(jié)
在本教程中,我們學(xué)習(xí)了測試問題及如何用 scikit-learn 在 Python 中使用他們。
具體來說,其中包括:
如何生成多類分類預(yù)測測試問題;如何生成二進(jìn)制分類預(yù)測測試問題;如何生成線性回歸預(yù)測測試問題。
Python自定義HtmlTestRunner測試報告 營銷視頻課程
簡述
使用selenium webdriver + Python做自動化測試,執(zhí)行完成后要生成測試報告,Python我們使用的HTMLtestrunner 進(jìn)行生成,但是默認(rèn)提供的生成報告內(nèi)容,并不能滿足我們的需求,怎么才能讓測試報告數(shù)據(jù)更清晰,內(nèi)容更豐富呢。對于一些人來說,可能已經(jīng)重寫了報告生成方式,放棄使用HTMLtestrunner。但是對于python小白可能還做不到,只能用現(xiàn)有東西進(jìn)行展示,那么下面簡單介紹通過修改HTMLtestrunner去實現(xiàn)想要的內(nèi)容。
先通過兩張圖片對比一下我們將要實現(xiàn)的功能:
圖表 1
圖表 2
如圖所示,圖表1是原始樣式輸出,圖表2是修改后樣式輸出。通過對比我們可以看到,圖表2比圖表1多了首位部的兩列。我在第一行加caseid,用來記錄用例的編號,最后一列,添加了每一個用例執(zhí)行過程中關(guān)鍵步驟的截圖快照。
這樣做的好處:
有了用例編號我們可以通過用例ID進(jìn)行對用例的定位,尤其是對失敗用例的定位。有了用例執(zhí)行過程中關(guān)鍵位置截圖快照,對于失敗或者出錯異常的用例,在無人值守情況下進(jìn)行執(zhí)行用例時,可以進(jìn)行界面追蹤。實現(xiàn)
下面來介紹怎么實現(xiàn)的,首先先說一下我實現(xiàn)的思路。對于這個我們的測試報告而言,我只想調(diào)整一下他的展示樣式,豐富兩列內(nèi)容。所以先去想怎么去把他的樣式給修改了。然后再往修改后的樣式表格里面添加數(shù)據(jù)。
也就是分兩步做:
1改樣式
2加數(shù)據(jù)
改樣式
改樣式,這里只需要會基礎(chǔ)的HTML
就可以了。 |
Count | Pass | Fail | Error | View | Screenshot | %(test_list)s%(count)s | %(Pass)s | %(fail)s | %(error)s |
table標(biāo)簽中的第一個
Count Pass Fail Error View Screenshot //圖片快照的列頭標(biāo)題
REPORT_CLASS_TMPL = “”” … “””代碼段 是 展示calss的行,可以叫做測試模塊的類,它是單獨(dú)放在一行中的,每個模塊一行。因為要跟上面的第一行標(biāo)題中的列數(shù)對應(yīng),所以修改如下:
case_id %(desc)s %(count)s %(Pass)s %(fail)s %(error)s //保持列數(shù)統(tǒng)一,加入空白列腳本片段3:
REPORT_TEST_WITH_OUTPUT_TMPL = “”” … “”” 是測試用例展示部分代碼,這段內(nèi)容是展開測試模塊后進(jìn)行顯示的
REPORT_TEST_WITH_OUTPUT_TMPL = r"""
%(script)s
單從HTML界面樣式展示來看,上面所有代碼段中修改都是在每個
這樣我們的樣式就改完了。然后開始加入數(shù)據(jù)。
加數(shù)據(jù)
先想一下我們要加什么數(shù)據(jù).從樣式中看我們增加了兩個列,那么有兩列的數(shù)據(jù)是需要增加的,具體加什么呢?想一下?我們在改樣式的時候加的兩個列中使用到了變量,那么變量取值是需要實現(xiàn)的。那么首先定義變量。
定義報告輸出兩個變量的取值,放在 REPORT_TEST_OUTPUT_TMPL定義的下面:
腳本片段4:
REPORT_TEST_OUTPUT_TMPL = r"""%(id)s: %(output)s"""REPORT_TEST_OUTPUT_IMAGE = r"""%(screenshot)s"""REPORT_TEST_OUTPUT_CASEID = r"""%(case_id)s"""
然后找到 _generate_report_test 函數(shù),在這個函數(shù)中定義我們要替換html變量,并實現(xiàn)變量的取值。
腳本片段5:
script = self.REPORT_TEST_OUTPUT_TMPL % dict( id = tid, output = saxutils.escape(uo+ue), ) image = self.REPORT_TEST_OUTPUT_IMAGE % dict( screenshot = saxutils.escape(uo+ue)) caseid = self.REPORT_TEST_OUTPUT_CASEID % dict( case_id = saxutils.escape(uo+ue) ) row = tmpl % dict( tid = tid, Class = (n == 0 and'hiddenRow'or'none'), style = n == 2 and'errorCase'or (n == 1 and'failCase'or'none'), desc = desc, script = script, image = image[image.find("image"):(int(image.find("png"))+3)], caseid = caseid[caseid.find("case"):(int(caseid.find("case"))+9)], status = self.STATUS[n],)
上面 image 、caseid 字符串截取位置跟我在控制臺輸出的內(nèi)容有關(guān)系,所以不是通用的,需要自行修改。字符串截取的方式就不講了,方式很多種找自己合適的熟悉的就行。
至此修改HTMLtestrunner生成報告模板就修改結(jié)束,我的這個方式或許不是你想要的,不是你想展示的,希望能在思路上幫你去解決你的問題。
另:有朋友問能不能內(nèi)容顯示成中文的,看明白了上面內(nèi)容我想中文的顯示就不是什么問題了。直接改HTML標(biāo)簽中顯示的英文內(nèi)容翻譯為中文就可以了。
作者: Ray博客地址:聲明:本文已獲作者授權(quán)轉(zhuǎn)載,著作權(quán)歸作者所有。
最新推薦