今天分享內容的重點,和大家來講一下我們的測驗框架——Pytest
講到這個框架的話呢,可能有伙伴就會問老師,我在學習自動化測驗程序中,我們要去學一些什么東西?
第一個肯定要學會的是一門編程語言,比如說Python或者Java,至少你要會一個
第二個,你去進行WebUI自動化或者介面自動化,一些成熟的框架,比如說用來做Web自動化有Selenium,App自動化有Appium、uiautomator2,介面自動化框架就非常的多,requests、httprunner,這個只是說是框架,不是指工具,如果說你要指工具的話,還有很多,比如進行Web自動化的工具,QTP、Airtest、RF這一些都是工具,RF你其實也可以理解它為一個開源的框架,
編程語言:
- python/java
成熟的框架:
- web自動化: selenium RF
- app自動化:appium uiautomator2 RF
- 介面自動化:requests httprunner
除了這一些之外,我們要去搭建一套框架,我相信大家肯定還聽過這兩個東西,哎~老師,不是還有一個叫做Unittest以及我們這個Pytest,我們講到Unittest以及Pytest到底和我們前面的框架有什么區別呢?
這就和大家來講一講,
一聽到框架這個東西,兩類都叫做框架,區別在哪?
Unittest以及Pytest我們把它們叫做單元測驗框架,這一類框架運用場景有兩個,場景一用來做單元測驗(對代碼最小的集合進行測驗比如說小到測驗函式的功能是否實作,類的功能是否實作),做單元測驗其實要針對不同的語言有不同的框架,比如說在單元測驗比較成熟這種框架Xunit系列框架,比如說去寫的網站是用Java來設計的,我要去測驗就要用到Junit這個框架,或者你也可以用testng框架,是針對Java比較成熟的兩個框架,比如說去寫的網站是用Python來設計的我們用的就是Unittest以及Pytest,
單元測驗框架:
場景一:用來做單元測驗 對代碼最小的集合進行測驗(函式、類)
-
xunit系列框架
-
java ==》junit / testng
-
python ==》unittest / pytest
上面是它的第一個場景,我們在講自動化的時候,我們很少會去用場景一,單元測驗這個事情本來它是由測驗工程師來做的,但是它對測驗工程師要求比較苛刻,需要精通熟練一門編程語言,才能夠把單元測驗做得很好,基本上單元測驗不會有專門的測驗工程師去做,公司中大部分都是由開發進行一個交叉的測驗,
場景二:自動化的用例的管理
unittest / pytest + selenium / appium/requests
場景二用就可以結合我們的成熟的框架來做自動化測驗,用例的管理,昨天的時候就有跟大家講到POM的一個分層,為什么要用到分層思想來進行設計呢,其實目的就是因為我們在進行自動化測驗的程序中間,也是對于我們自動化用例去進行一個覆寫以及實作,在程序中間會有很多重復性的東西,我們就給它抽出來,
我們講POM的時候,我們其實就是結合了unittest來設計的用例,并且運行,
只是說咱們沒有去生成Html報告,其實真正的你要去進行完整的程序,除了以這種模式來設計用例之外,還要去執行用例還要有報告的生成,(昨天有講Unittest設計用例的基本規則,需要視頻教程的可以公眾號主頁點擊領取資料)
軟體測驗全堆疊工程師 程式員一凡.png
今天就給大家來講一下,Pytest框架是如何來管理用例,和Unittest又有什么區別?它有什么樣的優勢?
Pytest框架概述
- pytest是一個非常成熟的python的單元測驗框架,比unittest更靈活,功能更強大,
- pytest可以和selenium、appium、requests等結合實作web自動化、介面自動化、app自動化
- pytest可以實作測驗用例的跳過以及reruns失敗用例重試
- pytest可以和allure生成非常美觀的測驗報告
- pytest可以和jenkins持續集成
- pytest有很多非常強大的插件,并且這些插件能夠實作很多實用的操作
Pytest插件
Pytest具有很多第三方插件,并且可以自定義擴展,常用的有:
- pytest
- pytest-xdist:測驗用例分布式執行,多cpu分發
- pytest-ordering:用于改變測驗用例的執行順序
- pytest-rerunfailures:用例失敗后重跑
- pytest-html:生成html格式的自動化測驗報告
- allure-pytest:生成美觀的allure測驗報告
pytest識別用例默認規則
1.模塊名(檔案名)必須以test_開頭或者以_test結尾
2.測驗類必須以Test開頭,并且不能有init方法
3.測驗方法必須以test開頭
pytest組態檔
pytest.ini這個檔案他是pytest單元測驗框架的核心組態檔
1.位置: pytest.ini一般放在專案的根目錄下
2.編碼:必須是ANSI,可以使用Notepad++修改編碼格式,有中文的時候一定要注意轉碼,否則會報錯
3. 作用:改變pytest默認的執行方式
4.運行規則:主函式和命令列的執行方式,都會默認讀取pytest.ini的組態檔
pytest組態檔
引數詳解
-s:輸出除錯資訊,包括print列印資訊
-v:顯示更詳細的資訊
-vs:兩個引數一起用,輸出詳細的除錯資訊
-n:支持多執行緒或者分布式運行測驗用例
- pytest test_login.py -vs -n 2
--reruns NUM:失敗用例重跑次數
--maxfail=2:出現2個用例失敗就停止
--html=./report/res.html:指定在目錄生成一個測驗報告
pytest test_login.py --html=./report/res.html
Allure環境部署
下載、安裝、配置Allure
下載地址: https://github.com/allure-framework/allure2/releases
安裝:解壓即可
配置:環境變數--path--allure安裝目錄/bin
驗證:
- dos命令列: allure --version
- pycharm terminal:allure --version
- 問題:dos驗證Ok,pycharm驗證失敗怎么解決?重啟pycharm
Allure報告指令
1.添加配置,生成json格式的臨時報告
- 主函式: pytest.main(['--alluredir ,'./temp'])
- 組態檔:
addopts = --alluredir./temp
2.將json格式的臨時報告轉換為allure報告pytest.main(['--alluredir' ;'./temp'])os.system('allure generate ./temp -o ./report --clean')
冒煙測驗
pytest.ini中添加markers = smoke:冒煙測驗
在函式上加上mark標記來指定進行冒煙測驗的用例:@pytest.mark.smoke
命令列執行:pytest -m smoke
主函式執行: pytest.ini添加-m smoke,再執行主函式即可
冒煙測驗
1、點贊,防止以后找不到,想看的時候,在自己主頁就能找到了,很方便;
2、關注我,讓我們成為長期關系,下一個視頻會分享更多的硬核干貨;
3、本文章學習資源,均可以免費分享,
微信公眾號:程式員一凡,這樣的好內容,里面還有近百篇, 謝謝你的支持!
你看到優質的文章點贊,表面上是為了讓作者開心,實際上可以讓大資料和人工智能給你推薦更多優質的干貨內容~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/281394.html
標籤:其他
