pytest 框架與自動化測試應用

pytest 框架與自動化測試應用

作者: 房荔枝 梁麗麗
出版社: 清華大學
出版在: 2021-11-01
ISBN-13: 9787302587156
ISBN-10: 7302587159
總頁數: 424 頁





內容描述


pytest 是 Python 的第三方測試框架,可以實現軟件測試各層次自動化。本書系統講述pytest的主要技術及在各層次自動化測試的應用。 第1章介紹pytest框架。第2章講解框架運行管理及對測試用例、斷言的管理,運行管理中包括各種形式和層次的執行,展示框架的靈活性和全面性。第3章詳細介紹框架的核心技術fixture,fixture使用依賴註入技術完成方法、類、文件級、會話級關聯、數據關聯和共享,可完美解決各種情況耦合和共享。第4章結合測試中最重要的數據驅動技術產生的參數化技術,並配合fixture技術實現一組代碼多組數據的數據與代碼分離技術。第5章系統講解各種實用插件。第6~10章是實踐,從單元自動化測試、接口自動化測試、Web端自動化測試及App自動化測試計劃開始,講解設計、實現到執行的全流程。第11章介紹BDD,讓非技術人員也能參與測試的全過程。第12章介紹pytest一些相關配置。 本書可作為從事軟件自動化測試的技術人員的參考書籍,也可作為高等院校,高職類軟件工程中質量保證的參考書籍。


目錄大綱


第1章pytest框架介紹
1.1pytest框架引入
1.1.1測試框架能為我們解決什麼問題
1.1.2測試框架的分類
1.1.3什麼是pytest
1.2技術前提要求
1.2.1技術前提
1.2.2適合人群
1.3環境準備及資料準備
1.3.1Python的環境驗證
1.3.2安裝pytest
1.4pytest初體驗
1.4.1在終端建立測試方法及執行過程
1.4.2在PyCharm建立測試方法及執行過程
1.4.3pytest的框架結構
1.4.4在PyCharm中配置運行工具
1.4.5右擊以pytest方式執行代碼
1.4.6去掉main方法執行測試
1.4.7PyCharm中執行某個測試方法
1.4.8運行窗口的工具欄含義
1.5執行的查找原則和測試類及測試方法的命名
1.6本章小結
第2章pytest的測試用例管理及運行管理
2.1測試用例的命名管理
2.2用例執行順序
2.3測試用例的斷言管理
2.3.1什麼是斷言
2.3.2斷言的時機
2.3.3斷言的分類與使用
2.3.4觸發一個指定異常的斷言
2.3.5為失敗斷言添加自定義的說明
2.3.6Assert各種類型斷言
2.4測試用例的運行管理
2.4.1獲取幫助信息
2.4.2常用運行測試用例方式
2.4.3通過python m pytest 調用pytest
2.4.4在Python代碼中調用pytest
2.4.5pytest執行結束時返回的狀態碼
2.4.6輸出代碼中的控制台信息
2.4.7顯示詳細信息
2.4.8不顯示詳細信息
2.4.9顯示簡單總結結果
2.4.10執行指定的測試用例
2.4.11執行指定目錄下所有的測試用例
2.4.12k參數執行包含特定關鍵字的測試用例
2.4.13執行指定nodeid的測試用例
2.4.14m參數執行指定標記的用例
2.4.15執行指定包中的測試用例
2.4.16修改回溯信息的輸出模式
2.5運行的失敗管理
2.5.1多允許失敗的測試用例數
2.5.2失敗運行管理的原理
2.6跳過skip測試用例的執行
2.6.1@pytest.mark.skip裝飾器
2.6.2pytest.skip方法
2.6.3@pytest.mark.skipif裝飾器
2.6.4pytest.importorskip方法
2.6.5跳過測試類
2.6.6跳過測試模塊
2.6.7跳過指定文件或目錄
2.6.8各種跳過小結
2.7標記用例為預期失敗
2.7.1@pytest.mark.xfail標記用例
2.7.2使用pytest.xfail標記用例
2.7.3xfail標記如何失效
2.8中斷調試及錯誤處理
2.8.1失敗時加載PDB環境
2.8.2開始執行時就加載PDB環境
2.8.3設置斷點
2.8.4使用內置的中斷函數
2.8.5錯誤句柄
2.9結果分析及報告
2.9.1分析測試執行時間
2.9.2創建及定制JUnitXML格式的測試報告
2.10不穩定測試用例處理
2.10.1為什麼不穩定測試是個問題
2.10.2潛在的根本原因是什麼
2.10.3pytest為我們提供的解決策略
2.10.4pytest_CURRENT_TEST
2.10.5可以重新運行的插件
2.10.6測試人員採用的解決策略
2.11本章小結
第3章pytest中閃亮的fixture功能
3.1fixture介紹
3.2fixture目標
3.3fixture基本的依賴注入功能
3.4fixture應用在初始化設置
3.5fixture應用在配置銷毀
3.5.1使用yield代替return
3.5.2使用with寫法
3.5.3使用addfinalizer方法
3.5.4yield與addfinalizer的區別
3.6fixture方法源碼詳細講解
3.7不同層級scope使用fixture實例
3.7.1模塊(module)級別使用fixture實例
3.7.2類(class)級別使用fixture實例
3.7.3會話(session)級別使用fixture與conftest.py配合
3.7.4session級別實例
3.8使用params 傳遞不同數據
3.8.1測試方法使用兩個簡單測試數據
3.8.2二(多)個測試方法共用兩個簡單測試數據
3.8.3有效測試數據與預期失敗xfail的測試數據
3.8.4params與ids的應用
3.8.5params綜合實例
3.9自動調用fixture
3.9.1使用fixture中參數autouse=True實現
3.9.2使用@pytest.mark.usefixtures
3.9.3數據庫自動應用的實例
3.10第三方插件通過文件夾共享測試數據
3.11fixture的並列與嵌套調用
3.11.1並列使用fixture
3.11.2嵌套調用fixture
3.11.3多個fixture的實例化順序
3.11.4fixture返回工廠函數
3.11.5高效地利用fixture實例
3.12在不同的層級上重寫fixture
3.12.1在文件夾(conftest.py)層級重寫fixture
3.12.2在模塊層級重寫fixture
3.12.3在用例參數中重寫fixture
3.12.4參數化的fixture可重寫非參數化的fixture,反之亦然
3.13本章小結
第4章pytest的數據驅動和參數傳遞
4.1參數化介紹
4.2參數化的應用
4.2.1單一參數化應用
4.2.2多參數應用
4.2.3多個參數化
4.2.4參數化與fixture的結合
4.2.5pytestmark實現參數化
4.3parametrize源碼詳細講解
4.4argnames參數
4.4.1argnames與測試方法中的參數關係
4.4.2argnames調用覆蓋同名的fixture
4.5argvalues參數
4.5.1argvalues來源於Excel文件
4.5.2使用pytest.param為argvalues賦值
4.6indirect參數
4.7ids參數
4.7.1ids的長度
4.7.2ids相同
4.7.3ids中使用中文
4.7.4通過函數生成ids
4.7.5ids的覆蓋
4.7.6ids的作用
4.8scope參數
4.8.1module級別
4.8.2未指定scope
4.9pytest_generate_tests鉤子方法
4.10本章小結
第5章pytest的相關插件及插件管理
5.1pytest的插件安裝
5.2常見插件介紹
5.3常用插件的使用
5.3.1pytestassume斷言報錯後依然執行
5.3.2pytestcov 測試覆蓋率
5.3.3pytestfreezegun 冰凍時間
5.3.4pytestflakes靜態代碼檢查
5.3.5pytesthtml生成HTML報告
5.3.6pytesthttpserver 模擬HTTP服務
5.3.7pytestinstafail用於用例失敗時立刻顯示錯誤信息
5.3.8pytestmock 模擬未實現的部分
5.3.9pytestordering調整執行順序
5.3.10pytestpep8自動檢測代碼規範
5.3.11pytestpicked運行未提交git的用例
5.3.12pytestrerunfailures 失敗重試
5.3.13pytestrepeat 重複運行測試
5.3.14pytestrandomorder 隨機順序執行
5.3.15pytestsugar 顯示彩色進度條
5.3.16pytestselenium 瀏覽器兼容性測試
5.3.17pytesttimeout 設置超時時間
5.3.18pytestxdist測試並發執行
5.4插件管理
5.4.1在測試模塊或conftest文件中加載插件
5.4.2找出哪些插件處於活動狀態
5.4.3通過名稱停用/註銷插件
5.5本章小結
第6章與Allure框架結合定制測試報告
6.1Allure框架介紹
6.2Allure如何生成測試報告
6.3Allure報告組成
6.3.1總覽
6.3.2類別
6.3.3測試套件
6.3.4功能
6.3.5圖形
6.3.6時間軸
6.3.7包
6.4Allure的初體驗
6.4.1Allure在Windows 系統下安裝
6.4.2Allure在Linux環境下安裝
6.4.3Allure在Mac OS系統下安裝
6.4.4Allure的簡單用法
6.4.5Allure的幫助說明
6.5定制測試報告
6.5.1定制詳細的步驟說明
6.5.2不同類型的附件補充測試說明
6.5.3定制各種類型內容描述
6.5.4定制測試標題
6.5.5各種鏈接
6.5.6自定義各種標籤
6.5.7嚴重性標記
6.5.8重試信息展示
6.6本章小結
第7章單元自動化測試實踐
7.1什麼是單元測試
7.2pytest測試框架是單元測試的框架
7.3單元測試與質量
7.4單元測試一個函數
7.5單元測試一個類
7.5.1類的說明
7.5.2開發的調用
7.5.3類持續開發: 功能的增加及修改
7.5.4類的單元測試
7.6本章小結
第8章API自動化測試實踐
8.1測試微信公眾號接口
8.1.1熟悉接口文檔以便獲取信息
8.1.2接口測試用例設計
8.2執行測試
8.2.1使用get()、post()方法發送請求,返迴響應
8.2.2使用conftest共享數據
8.2.3讀取yaml數據文件進行parametrize
8.2.4關聯接口數據傳遞及更新刪除接口測試
8.2.5fixture的依賴接口需要測試,也需要參數化
8.3使用Allure定制報告
8.4使用pytest進行各種執行
8.5本章小結
第9章Web自動化測試持續集成實踐
9.1Web自動化測試及持續集成源起
9.2被測試系統的安裝和介紹
9.2.1人力資源管理系統安裝
9.2.2人力資源管理系統介紹
9.3Web項目自動化原理及Web測試框架
9.3.1自動化測試要達到的目標和涉及的技術
9.3.2Web自動化測試框架Selenium介紹
9.3.3Selenium框架技術簡述
9.4整合Web自動化測試框架
9.4.1自動化測試準備
9.4.2創建工程目錄
9.4.3頁面元素定位
9.4.4頁面元素操作
9.4.5提高代碼的複用性和靈活性——封裝
9.4.6編寫測試用例
9.4.7測試執行
9.4.8生成Allure報告
9.5Web自動化測試本地環境持續集成
9.5.1Jenkins 2實現自動化執行測試及持續集成流程
9.5.2使用自由風格配置Python自動化測試
9.5.3使用pipeline配置Python自動化測試
9.5.4使用BlueOcean配置Python自動化測試
9.6本章小結
第10章App自動化測試項目實踐
10.1App自動化測試框架選擇
10.2App自動化測試環境的搭建
10.2.1安裝和驗證Java JDK——Windows系統
10.2.2安裝和驗證Node.js
10.2.3安裝Android SDK
10.2.4安裝模擬器或連接真機
10.2.5安裝appiumdesktop
10.2.6安裝appiumclient
10.2.7appiumdoctor環境檢查
10.3使用pytest和Allure建立App自動化混合框架
10.3.1安裝所需要的包和插件
10.3.2建立目錄結構
10.3.3連接App的配置及啟動App
10.3.4使用各種工具進行元素定位
10.3.5使用PO方式建立元素定位locators類
10.3.6使用PO方式建立元素操作方法基類
10.3.7使用PO方式建立每個頁面或功能的元素操作方法類
10.3.8結合pytest的特性建立公共數據共享文件conftest.py
10.3.9使用PO的方式建立測試類
10.3.10使用yaml文件及pytest中的parametrize作為數據驅動程


作者介紹


房荔枝  51testing資深講師,具有十幾年中、大型公司軟件測試、測試自動化及測試管理的一線經驗。

梁麗麗  哈爾濱職業技術學院講師,院生態電商專業創新團隊成員,院電子商務專業工程技術教育認證(TAC)成員,院優秀班主任,長期從事網頁設計、無線傳感器網絡研究應用、計算機應用技術領域的教學和研究工作。先後開設商務網頁設計與製作、電子商務網站建設與管理、計算機應用技術、人工智能等多門課程。主持省規劃辦重點課題1項,參與省級及校級課題4項,獲國家發明專利2項,發表論文6篇。




相關書籍

Pro Apache JMeter: Web Application Performance Testing

作者 Sai Matam

2021-11-01

Pragmatic Unit Testing in Java 8 with JUnit (Paperback)

作者 Jeff Langr Andy Hunt Dave Thomas

2021-11-01

Pragmatic Unit Testing in C# with NUnit, 2/e

作者 Andy Hunt Dave Thomas Matt Hargett

2021-11-01