天天看點

Python Web自動化測試入門與實戰,從入門到入行

Python Web自動化測試入門與實戰,從入門到入行

全書基于Python語言,從環境搭建、基礎知識、常用架構、項目實戰、持續內建等方面詳細介紹了Web自動化測試的知識。全書共三篇14章,一篇(1~7章)為基礎篇,介紹Python語言基礎、Selenium和WebDriver的使用以及兩個流行的單元測試架構UnitTest和Pytest;二篇(8章~10章)為實踐篇,主要以資料驅動模型和PO模型為例介紹自動化測試項目的流程和應用;三篇(11章~14章)為卓異篇,介紹了測試人員如何拓展自己的知識面、提高項目代碼品質的建議以及一些與自動化測試相關的面試題。 本書技術先進,通俗易懂,示例豐富,特别适合于想入行自動化測試崗位的初學者和在校學生,也适合掌握了一定的測試基礎知識希望快速提升實戰能力的讀者使用。

豆瓣高評分讀書:

Python Web自動化測試入門與實戰,從入門到入行

本書由一線測試工程師結合工作實踐精心編撰。全書基于Python語言,從環境搭建、基礎知識、常用架構、項目實戰、持續內建等方面詳細介紹了Web自動化測試的知識。全書共三篇14章,一篇(1~7章)為基礎篇,介紹Python語言基礎、Selenium和WebDriver的使用以及兩個流行的單元測試架構UnitTest和Pytest;二篇(8章~10章)為實踐篇,主要以資料驅動模型和PO模型為例介紹自動化測試項目的流程和應用;三篇(11章~14章)為卓異篇,介紹了測試人員如何拓展自己的知識面、提高項目代碼品質的建議以及一些與自動化測試相關的面試題。 本書技術先進,通俗易懂,示例豐富,特别适合于想入行自動化測試崗位的初學者和在校學生,也适合掌握了一定的測試基礎知識希望快速提升實戰能力的讀者使用。

Python Web自動化測試入門與實戰,從入門到入行

作者:楊定佳

定價:79元

印次:1-1

ISBN:9787302552956

出版日期:2020.06.01

印刷日期:2020.04.23

楊定佳,英文名Tynam,從事軟體測試工作多年,目前就職于某外企。在自動化測試設計、架構搭建和開發中具有自己獨特的見解。長期在IT部落格圈分享軟體測試與開發技術相關博文

随着網際網路的快速發展,軟體研發模型越來越完善,軟體品質也越來越受到各公司的重視,在這種情況下,軟體測試技術特别是自動化測試技術在産品研發過程中扮演了極為重要的角色。自動化測試能夠快速、全面地對軟體進行測試,進而在保證産品品質的前提下進行軟體的快速疊代。與此同時,軟體測試崗位吸引了大量從業者。本書正是為滿足初入自動化測試行業的從業者的需求而精心編撰。

本書基于Python語言編寫,對于Web自動化測試相關技術做了整體詳細的介紹,從基礎到提升、從理論到實踐、從單個知識點到項目運用,既可以讓讀者快速上手又能夠運用于實際項目,進而提高讀者的實戰技能。

本書内容分為3大篇,共計14章。各部分内容概述如下:

基礎篇(第1章~第7章)—自動化測試基礎知識。本篇主要講述自動化測試人員需要掌握的基本知識,從代碼使用層面進行介紹,包括Python基礎、WebDriver API的使用及單元測試架構等知識。

第1章~第3章是自動化測試的入門知識。第1章為開始自動化工作前的準備工作—環境搭建。第2章和第3章分别介紹Python的使用和WebDriver API的使用,掌握了基礎知識後就能夠編寫一些簡單的自動化測試腳本。

第4章~第7章是學習完第1章~第3章入門知識後的進階知識。第4章和第6章分别介紹了經常使用的兩種單元測試架構UnitTest和Pytest,學完單元測試架構便可以對項目有個基本的構思。第5章介紹Selenium Grid分布式執行測試用例(好的項目還需要搭配高速的執行效率)。第7章介紹了Python的一些常用子產品。

基礎篇主要是為自動化測試實踐運用打下牢固的基礎,适合初學自動化測試的人員學習。

實踐篇(第8章~第10章)—自動化測試項目實戰。

實踐篇是在掌握了基礎篇的基本知識後,在自動化測試項目的應用。從項目層面進行介紹,以資料驅動模型和PO模型為基礎進行實戰練習,然後進行持續內建操作。

第8章使用資料驅動模型,從項目解析、架構搭建、用例組織、資料操作等幾個方面進行介紹,主要使讀者對資料驅動模型有一個認識,該模型在實際項目中會被經常使用。

第9章使用PO模型,以一個簡單的背景管理系統從項目解析、架構搭建、常用結構封裝、頁面封裝、用例組織、設定項目入口等幾個方面進行介紹。很多公司在項目中都會以PO模型為基礎,混合資料驅動模型和其他的一些方式進行項目操作,建議讀者對本章内容進行深入的學習。

第10章介紹了目前最流行的持續內建工具Jenkins,對第9章産生的項目測試腳本進行持續內建,從項目建立、任務定時、郵件發送等幾個方面進行實戰應用。

本篇屬于項目實踐篇,适合具有一定基礎的自動化測試人員學習。學完實踐篇,在項目解析、自動化架構搭建、子產品封裝、用例組織、測試報告生成和持續內建上,讀者已經有一定程度的認知,由此便可以在中小型項目上進行實際操作。

卓異篇(第11章~第14章)—拓展知識面并提高項目品質。

卓異篇主要用來提高讀者的知識面,一個完整的自動化測試項目不隻是寫好測試腳本,還需要一些輔助的知識技能,本篇将介紹6種測試模型、如何寫一手高品質的代碼和以GitHub為例講解Git的基本使用,此外,還介紹了一些初級測試人員求職必備的面試題。

第11章介紹的是5種基本自動化測試模型,即線性模型、子產品化驅動模型、資料驅動模型、關鍵字驅動模型及行為驅動模型。

第12章介紹如何提高自己的編碼品質,從編碼規範、項目層次結構、個人學習幾個方面進行說明。

第13章介紹了一個開源的分布式版本控制系統Git,并以GitHub為例介紹Git指令的使用。

第14章精選了一些常見的自動化測試經典面試題,涵蓋Python、Selenium和開放性三個方面,以幫助有求職需求的讀者應對面試。

卓異篇旨在拓展知識,不僅适合自動化測試人員,對于從事測試工作的從業者也同樣适合。

本書的特點主要展現在以下幾方面:

l  内容編排循序漸進,從零基礎開始到架構結構在項目中應用,針對Web自動化測試新手量身打造。

l  知識點全面,涵蓋了Web自動化測試體系中的大部分知識點。從基礎知識到架構結構、持續內建等都進行了講解。

l  理論與應用結合,知識點講解中整合了許多示例進行示範說明。

l  技術新,本書所講解的知識都是目前比較流行的,用到的技術比較新。

l  代碼豐富,實用性和系統性非常強。

l  示例代碼開源,參考附錄可擷取開發示例源碼。

l  項目實戰應用,學完基礎知識,可以在項目中進行實戰練習,即學即用,迅速獲得項目經驗。

l  結合筆者實際經驗進行示例講解。

l  擴充性,學完本書後不但會運用本書技術還能夠寫出高品質的代碼,并應對求職面試。

本書主要适合以下讀者:

l  希望進入自動化測試行業的人員。

l  在校學生。

l  自動化測試零基礎的測試從業者。

l  有一定基礎希望提升自己的測試從業者。

l  教育訓練機構學員。

希望讀者通過閱讀本書都能夠快速進入Web自動化測試領域,對Web自動化測試有一個清晰地了解,并且具備承擔Web自動化測試開發的能力。

由于編者水準所限,書中難免存在錯誤或解釋不到位的地方,懇請廣大讀者批評指正。

聯系郵箱:[email protected]

2019年12月

 第一篇  基礎篇

 第1章  學習環境的搭建... 1

 1.1  環境搭建... 1

 1.1.1  Selenium簡介... 2

 1.1.2  Python簡介... 3

 1.1.3  Python的安裝... 5

 1.1.4  環境變量的設定... 6

 1.1.5  Selenium的安裝... 7

 1.1.6  浏覽器驅動的安裝... 8

 1.1.7  PyCharm的安裝... 12

 1.2  開始你的第一個項目... 15

 第2章  Python基礎... 18

 2.1  基礎文法... 18

 2.1.1  列印... 18

 2.1.2  編碼... 19

 2.1.3  資料類型... 20

 2.1.4  變量... 21

 2.1.5  注釋... 21 

2.1.6  縮進... 22

 2.2  運算符... 22

 2.2.1  算術運算符... 22

 2.2.2  比較運算符... 23

 2.2.3  邏輯運算符... 23

 2.2.4  Is 與 ==. 24

 2.3  條件語句... 24

 2.3.1  單項判斷... 25

 2.3.2  雙向判斷... 25

 2.3.3  多項判斷... 25

 2.4  循環語句... 26

 2.4.1  for語句... 26

 2.4.2  while語句... 27

 2.4.3  continue和break. 28

 2.5  清單... 28

 2.5.1  建立清單... 28

 2.5.2  擷取元素... 29

 2.5.3  添加元素... 29

 2.5.4  删除元素... 29

 2.5.5  清單切片... 30

 2.5.6  其他操作... 31

 2.6  元組... 31

 2.6.1  建立元組... 31

 2.6.2  擷取元素... 31

 2.6.3  拼接元組... 32

 2.6.4  删除元組... 32

 2.6.5  其他操作... 32

 2.7  字典... 33

 2.7.1  建立字典... 33

 2.7.2  擷取元素... 33

 2.7.3  修改元素... 33

 2.7.4  删除元素... 34

 2.7.5  其他操作... 34

 2.8  集合... 34

 2.8.1  建立集合... 35

 2.8.2  添加元素... 35

 2.8.3  移除元素... 35

 2.8.4  其他操作... 36

 2.9  推導式... 36

 2.9.1  清單推導式... 36

 2.9.2  字典推導式... 37

 2.9.3  集合推導式... 37

 2.10  生成器... 38

 2.10.1  建立生成器... 38

 2.10.2  send方法... 39

 2.11  疊代器... 40

 2.11.1  可疊代對象... 40

 2.11.2  建立疊代器... 40

 2.12  函數... 41

 2.12.1  函數... 41

 2.12.2  參數... 42

 2.12.3  匿名函數... 45

 2.12.4  參數類型... 45

 2.12.5  傳回值類型... 46

 2.13  類和對象... 46

 2.13.1  建立類... 46

 2.13.2  建立執行個體對象... 47

 2.13.3  類的私有化... 48

 2.13.4  類繼承... 49

 2.13.5  類的重寫... 51

 2.14  子產品... 52

 2.14.1  子產品的分類... 52

 2.14.2  子產品的導入... 52

 2.15  作用域... 53

 2.16  異常機制... 54

 2.16.1  try-except 54

 2.16.2  else. 55

 2.16.3  finally. 56

 2.17  __init__.py檔案... 56

 2.18  Python實用技巧... 57

 第3章  Selenium WebDriver 62

 3.1  WebDriver 簡介... 62

 3.1.1  WebDriver的特點... 62

 3.1.2  常用WebDriver 63

 3.2  源碼中查找元素... 63

 3.2.1  檢視網頁源碼... 63

 3.2.2  查找元素的屬性... 64

 3.3  元素定位... 65

 3.3.1  id定位... 68

 3.3.2  class定位... 68

 3.3.3  name定位... 69

 3.3.4  tag定位... 70

 3.3.5  xPath定位... 70

 3.3.6  link定位... 71

 3.3.7  Partial link定位... 72

 3.3.8  CSS選擇器定位... 72

 3.3.9  By定位... 73

 3.3.10  确認元素的唯一性... 74

 3.4  定位一組元素... 76

 3.5  浏覽器操作... 78

 3.5.1  浏覽器最大化... 78

 3.5.2  設定浏覽器的寬和高... 78

 3.5.3  通路網頁... 78

 3.5.4  浏覽器後退... 79

 3.5.5  浏覽器前進... 79

 3.5.6  重新整理頁面... 80

 3.5.7  關閉浏覽器目前視窗... 80

 3.5.8  結束程序... 80

 3.5.9  擷取頁面 title. 81

 3.5.10  擷取目前頁面的URL. 81

 3.5.11  擷取頁面源碼... 82

 3.5.12  切換浏覽器視窗... 83

 3.5.13  滾動條操作... 86

 3.6  對象操作... 88

 3.6.1  單擊對象... 89

 3.6.2  輸入内容... 89

 3.6.3  清空内容... 90

 3.6.4  送出表單... 90

 3.6.5  擷取文本内容... 90

 3.6.6  擷取對象屬性值... 91

 3.6.7  對象顯示狀态... 91

 3.6.8  對象編輯狀态... 94

 3.6.9  對象選擇狀态... 95

 3.7  鍵盤操作... 96

 3.7.1  send_keys 操作... 96

 3.7.2  keyUp/keyDown 操作... 98

 3.8  滑鼠操作... 99

 3.8.1  滑鼠右擊... 99

 3.8.2  滑鼠輕按兩下... 99

 3.8.3  滑鼠懸停... 100

 3.8.4  滑鼠拖放... 100

 3.8.5  滑鼠其他事件... 101

 3.9  下拉框操作... 101

 3.10  特殊Dom結構操作... 103

 3.10.1  Windows彈窗... 103

 3.10.2  非Windows彈窗... 106

 3.10.3  frame與iframe. 108

 3.11  檔案上傳操作... 110

 3.11.1  直接上傳... 110

 3.11.2  使用AutoIt上傳... 112

 3.11.3  使用WinSpy上傳... 115

 3.12  檔案下載下傳操作... 119

 3.12.1  手動修改... 119

 3.12.2  通過options修改... 119

 3.13  WebDriver的進階特性... 120

 3.13.1  cookie操作... 120

 3.13.2  JavaScript調用... 122

 3.13.3  螢幕截圖... 122

 3.14  時間等待... 123

 3.14.1  強制等待... 123

 3.14.2  隐式等待... 124

 3.14.3  顯式等待... 124

 3.15  其他設定... 125

 3.15.1  限制頁面加載時間... 125

 3.15.2  擷取環境資訊... 126

 3.15.3  非W3C标準指令... 127

 3.16  配置Chrome浏覽器... 127

 3.17  SSL證書錯誤處理... 129

 第4章  UnitTest測試架構... 131

 4.1  UnitTest簡介... 131

 4.2  TestFixture. 132

 4.3  TestCase. 133

 4.4  斷言Assert 135

 4.5  TestSuit 137

 4.5.1  TestSuite直接建構測試集... 137

 4.5.2  addTest( )建構測試集... 138

 4.5.3  addTests( )建構測試集... 139

 4.5.4  skip裝飾器... 139

 4.6  TestLoader 140

 4.7  TestRunner 142

 4.8  生成HTML報告... 143

 第5章  Selenium Grid. 145

 5.1  Selenium Grid簡介... 145

 5.2  Selenium Grid的工作原理... 145

 5.3  Selenium Grid測試環境的搭建... 146

5.3.1  檔案準備... 146

5.3.2  部署Hub節點... 147

5.3.3  部署Node節點... 148 

5.4  測試腳本開發... 149

5.4.1  指定Node節點... 149

5.4.2  指定Hub位址... 150

第6章  Pytest測試架構... 152

6.1  Pytest簡介... 152

6.2  Console參數... 154

6.2.1  執行個體初體驗... 154

6.2.2  -v參數... 155

6.2.3  -h參數... 156

6.2.4  其他參數... 156

6.3  mark标記... 157

6.3.1  标記測試函數... 157

6.3.2  示例說明... 158

6.3.3  直接标記... 163

6.3.4  模糊比對标記... 165

6.3.5  使用mark自定義标記... 166

6.4  固件 Fixture. 167 

6.4.1  Fixture的使用... 167

6.4.2  Fixure的作用域... 168

6.4.3  autouse(自動使用)... 170 

6.4.4  yield的使用... 171

6.4.5  共享Fixture功能... 173

6.4.6  參數化... 175

6.4.7  内置Fixture. 176

6.5  Pytest插件... 182

6.5.1  插件的安裝與解除安裝... 182

6.5.2  檢視活動插件... 183

6.5.3  插件的登出... 184

6.6  Allure測試報告... 184

6.6.1  Allure的安裝... 184 

6.6.2  腳本應用... 186

6.6.3  報告生成... 186

第7章  Python腳本開發常用子產品... 189

7.1  日期和時間子產品time和datetime. 189

7.2  檔案和目錄子產品os 190

7.3  系統功能子產品sys 191

7.4  導入第三方子產品pip. 192 

7.5  郵件子產品smtplib. 195

7.5.1  開啟郵箱SMTP服務... 195

7.5.2  smtplib子產品的使用... 196

7.6  日志子產品logging. 199 

7.7  CSV檔案讀寫子產品csv. 201

7.8  Excel操作子產品openpyxl 203

7.9  MySQL資料庫操作包pymysql 205

7.9.1  簡單使用... 206

7.9.2  擷取查詢資料... 207

7.9.3  增删改資料... 209

7.10  JSON資料... 210

7.10.1  JSON文法... 210 

7.10.2  Python讀寫JSON.. 211

7.11  多線程子產品threading. 212

 第二篇  實踐篇 

第8章  資料驅動模型及項目應用... 215

8.1  資料驅動簡介... 215

8.2  ddt的使用... 216 

8.2.1  ddt的安裝... 216

8.2.2  ddt的常用方法... 216

8.2.3  執行個體... 217

8.3  項目解析... 218

8.4  架構搭建... 220 

8.5  設計測試用例... 221

8.6  資料檔案操作... 222

8.7  測試用例生成... 225

8.7.1  Excel資料處理... 225

8.7.2  測試步驟... 226

8.7.3  斷言處理... 227

8.7.4  使用ddt生成測試用例... 228

8.8  測試執行... 229

第9章  PO模型——一個測試項目的實作... 231

9.1  項目解析... 231

9.1.1  首頁... 232 

9.1.2  關于我們頁面... 233

9.1.3  登出... 233

9.2  架構搭建... 233

9.3  配置檔案... 235

9.4  常用結構的封裝... 236

9.4.1  判斷元素存在... 236 

9.4.2  Tab切換... 236

9.4.3  多級菜單... 239

9.4.4  表格結構... 241

9.4.5  分頁... 244

9.5  頁面封裝... 246

9.5.1  基礎頁面... 246

9.5.2  登入頁面... 248

9.5.3  首頁頁面... 251 

9.5.4  關于我們頁面... 257

9.5.5  登出功能... 257

9.6  測試用例生成... 257

9.6.1  登入功能的測試用例... 257

9.6.2  首頁頁面測試用例... 258 

9.6.3  關于我們頁面的測試用例... 260

9.6.4  登出功能的測試用例... 260

9.7  測試用例的組織... 261

9.8  設定項目入口... 262

第10章  持續內建在自動化測試中的應用... 264

10.1  Jenkins的安裝... 264

10.1.1  Jenkins的下載下傳... 264

10.1.2  安裝... 265

10.1.3  建立管理者使用者... 267

10.2  建立項目... 267

10.3  任務定時... 269 

10.3.1  任務定時建構的設定... 269

10.3.2  設定說明... 270

10.3.3  建構執行個體... 271

10.4  郵件發送... 271

10.4.1  插件安裝... 271

10.4.2  HTML 報告配置... 273

10.4.3  郵件配置... 275

第三篇  卓異篇

第11章  自動化測試模型... 279 

11.1  自動化測試模型簡介... 279

11.2  線性模型... 281

11.3  子產品化驅動模型... 282

11.4  資料驅動模型... 282 

11.5  關鍵字驅動模型... 282

11.6  混合驅動模型... 283

11.7  行為驅動模型... 283

11.7.1  安裝Behave. 284

11.7.2  Behave的使用... 286

11.7.3  運作... 288 

11.7.4  生成測試報告... 289

第12章  高品質代碼的編寫... 291

12.1  編碼規範... 291

12.2  分層與結構... 294

12.3  閱讀源碼的技巧... 295

12.3.1  分析層次... 295

12.3.2  分析結構... 296

12.3.3  分析具體檔案... 296

12.4  持續學習... 298

第13章  用Git管理項目... 299

13.1  Git簡介... 299

13.2  安裝Git 300

13.3  Git的配置... 301

13.3.1  配置使用者資訊... 301

13.3.2  文本編輯器配置... 301

13.3.3  配置差異分析工具... 301

13.3.4  檢視配置資訊... 302

13.4  常用指令... 302

13.5  GitHub. 304

13.5.1  賬号注冊... 304

13.5.2  建立倉庫... 306

13.5.3  上傳項目... 307

13.5.4  Jenkins與Git 308

第14章  精選面試題... 310

14.1  Python題... 310

14.2  Selenium題... 317 

14.3  開放性題... 321

附錄1  示例代碼... 324

附錄2  項目搭建... 327 

參考文獻... 330

繼續閱讀