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

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

購買地址

 京東:

 天貓:

圖書信息

定價: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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章