本書分為13章。第1章介紹了自動化測試框架設(shè)計基礎(chǔ)。第2~7章主要介紹單元測試框架的擴展,包括自動化測試報告設(shè)計、數(shù)據(jù)驅(qū)動設(shè)計、數(shù)據(jù)庫操作封裝設(shè)計、隨機測試數(shù)據(jù)設(shè)計、命令行工具設(shè)計和測試框架擴展功能設(shè)計。第8~11章主要介紹自動化測試庫和設(shè)計模式,包括Web UI自動化測試設(shè)計、App UI自動化測試設(shè)計、HTTP接口自動化測試設(shè)計和自動化測試設(shè)計模式。第12章介紹了自動化測試平臺化,以及Seldom框架如何為平臺化提供支持。第13章介紹了自動化測試的AI探索。本書適合自動化測試、軟件開發(fā)和質(zhì)量保證領(lǐng)域的開發(fā)者,以及各大院校計算機科學和軟件工程專業(yè)的學生閱讀,也適合有一定經(jīng)驗的開發(fā)人員參考使用。
蟲師,2011年6月開始在博客園持續(xù)分享測試技術(shù)和經(jīng)驗,在自動化測試、性能測試方面有著豐富實戰(zhàn)經(jīng)驗,另外,對Web開發(fā)技術(shù)也有一定的積累。前后擔任高級測試工程師、測試開發(fā)工程師,以及測試Leader等職位。
第1章 自動化測試框架設(shè)計基礎(chǔ) 1
1.1 相關(guān)概念對比 1
1.1.1 庫與框架 1
1.1.2 工具與框架 3
1.1.3 項目與框架 4
1.2 框架設(shè)計基礎(chǔ) 5
1.2.1 框架是獨立的 5
1.2.2 框架僅實現(xiàn)通用的功能 5
1.2.3 框架應(yīng)該有清晰的定位 6
1.3 單元測試框架 7
1.3.1 測試框架的基本功能 7
1.3.2 常見的單元測試框架 7
1.4 unittest擴展 12
1.4.1 實現(xiàn)unittest擴展 12
1.4.2 使用unittest擴展 14
1.5 pytest擴展 15
1.5.1 pytest擴展方式 16
1.5.2 實現(xiàn)pytest擴展 18
1.5.3 使用pytest擴展 20
1.6 構(gòu)建Python包 21
1.6.1 Poetry 21
1.6.2 PyPI倉庫 24
第2章 自動化測試報告設(shè)計 25
2.1 實現(xiàn)jsonrunner 25
2.1.1 重寫TestResult類 26
2.1.2 實現(xiàn)JSONTestRunner類 27
2.1.3 編寫測試用例 30
2.2 HTML主題模板 33
2.3 Jinja模板引擎 37
2.3.1 Jinja2的基礎(chǔ)使用方法 37
2.3.2 在Python中使用Jinja2 38
2.4 基于unittest生成HTML測試報告 40
2.4.1 修改runner.py測試運行器 41
2.4.2 修改HTML模板 43
2.4.3 編寫測試用例 44
第3章 數(shù)據(jù)驅(qū)動設(shè)計 46
3.1 unittest的數(shù)據(jù)驅(qū)動擴展 46
3.1.1 parameterized庫 46
3.1.2 DDT庫 48
3.2 參數(shù)化裝飾器 51
3.2.1 實現(xiàn)data裝飾器 52
3.2.2 實現(xiàn)dict數(shù)據(jù)格式支持 54
3.3 參數(shù)化數(shù)據(jù)文件 56
3.3.1 JSON數(shù)據(jù)轉(zhuǎn)換 57
3.3.2 YAML數(shù)據(jù)轉(zhuǎn)換 59
3.3.3 CSV數(shù)據(jù)轉(zhuǎn)換 60
3.3.4 Excel數(shù)據(jù)轉(zhuǎn)換 62
3.3.5 實現(xiàn)file_data裝飾器 64
第4章 數(shù)據(jù)庫操作封裝設(shè)計 66
4.1 操作數(shù)據(jù)庫技術(shù) 66
4.1.1 數(shù)據(jù)庫驅(qū)動 66
4.1.2 ORM 67
4.2 數(shù)據(jù)庫操作封裝 69
4.2.1 封裝執(zhí)行和查詢 69
4.2.2 封裝增查改刪 72
第5章 隨機測試數(shù)據(jù)設(shè)計 78
5.1 測試工具介紹 78
5.1.1 Faker 78
5.1.2 Hypothesis庫 80
5.2 隨機測試數(shù)據(jù)實戰(zhàn) 82
5.2.1 隨機生成手機號 82
5.2.2 隨機生成中文姓名 84
5.2.3 獲取在線時間 85
第6章 命令行工具設(shè)計 88
6.1 用Python實現(xiàn)命令行工具 88
6.1.1 argv的使用 88
6.1.2 argparse的使用 89
6.1.3 click的用法 90
6.2 命令行工具實戰(zhàn) 91
6.2.1 實現(xiàn)自動化測試項目腳手架 92
6.2.2 實現(xiàn)性能工具 94
6.2.3 生成命令行工具 97
第7章 測試框架擴展功能設(shè)計 100
7.1 測試用例依賴 100
7.1.1 依賴測試用例結(jié)果 100
7.1.2 依賴測試條件 103
7.2 測試用例分類標簽 104
7.2.1 實現(xiàn)分類標簽 105
7.2.2 使用分類標簽 107
7.3 使用緩存 109
7.3.1 Redis的使用 109
7.3.2 LRU Cache 112
7.3.3 磁盤文件模擬Cache 113
7.4 實現(xiàn)日志 117
7.4.1 logging模塊 118
7.4.2 Loguru庫 121
7.5 自定義異常 123
第8章 Web UI自動化測試設(shè)計 126
8.1 主流Web測試庫 126
8.1.1 Selenium 126
8.1.2 Cypress 127
8.1.3 Playwright 130
8.2 Selenium API的二次開發(fā) 132
8.2.1 封裝:重命名方法 133
8.2.2 封裝:元素定位和動作整合 133
8.2.3 封裝:獨立每個函數(shù) 135
8.2.4 封裝:鏈式調(diào)用 136
8.3 Selenium的斷言設(shè)計 137
8.3.1 單元測試框架提供的通用斷言 138
8.3.2 封裝Selenium斷言方法 139
8.4 Selenium環(huán)境管理 143
8.4.1 Selenium Manager 143
8.4.2 Docker-Selenium 144
第9章 App UI自動化測試設(shè)計 147
9.1 App移動自動化測試工具介紹 147
9.1.1 Android測試工具 147
9.1.2 iOS測試工具 148
9.1.3 Appium 149
9.1.4 Airtest Project 150
9.1.5 Open ATX 150
9.2 Appium基礎(chǔ) 151
9.2.1 Appium的安裝 151
9.2.2 Appium的使用 153
9.3 Appium API封裝 155
9.3.1 Switch類 155
9.3.2 Action類 158
9.3.3 FindByText類 161
9.3.4 KeyEvent類 165
9.4 Appium圖像與文字識別 167
9.4.1 images插件 168
9.4.2 Appium OCR 插件 173
第10章 HTTP接口自動化測試設(shè)計 179
10.1 HTTP客戶端庫 179
10.1.1 requests 179
10.1.2 HTTPX 180
10.1.3 aiohttp 180
10.2 HTTP請求方法集成日志 183
10.3 HTTP接口測試斷言設(shè)計 189
10.3.1 斷言基礎(chǔ)代碼 189
10.3.2 assertPath() 192
10.3.3 assertJSON() 196
10.3.4 assertSchema() 201
10.4 實用功能封裝 206
10.4.1 HTTP接口檢查裝飾器 206
10.4.2 方法依賴裝飾器 210
10.4.3 生成curl命令 215
10.5 WebSocket封裝與測試 219
10.5.1 WebSocket封裝 219
10.5.2 WebSocket測試 220
第11章 自動化測試設(shè)計模式 223
11.1 設(shè)計模式與開發(fā)策略 223
11.1.1 Page Object模式 223
11.1.2 Bot模式 224
11.2 基于Page Object模式的相關(guān)庫 226
11.2.1 selenium-page-factory 226
11.2.2 poium的基本使用 228
11.2.3 poium的設(shè)計原理 231
11.3 API Object模式 233
11.3.1 AOM的設(shè)計原理 233
11.3.2 AOM使用示例 235
第12章 自動化測試平臺化 239
12.1 自動化測試平臺化的基本信息 239
12.1.1 性能測試 239
12.1.2 HTTP接口自動化測試 240
12.1.3 Web UI自動化測試 241
12.1.4 App UI自動化測試 242
12.1.5 自動化測試平臺化的優(yōu)缺點 243
12.2 測試框架與測試平臺的整合方案 244
12.2.1 unittest解析用例 245
12.2.2 對測試用例的收集與運行 246
12.3 SeldomQA項目 253
12.3.1 Seldom框架 254
12.3.2 seldom-platform 258
第13章 自動化測試的AI探索 263
13.1 集成AI技術(shù)的自動化測試平臺 263
13.1.1 基于視覺AI技術(shù)的自動化檢測 263
13.1.2 基于AI的自動化測試運行 270
13.2 AIGC在自動化測試中的應(yīng)用 278
13.2.1 AI技術(shù)輔助生成自動化測試用例 278
13.2.2 基于LLM的代理框架 281