編輯推薦
適讀人群 :python測試開發工程師 python語言,能夠符閤廣大python測試開發工程師的需求和口味,並且增加瞭自動化測試框架的更多設計模式和框架功能。
內容簡介
主要講解webdriver開源的web自動化測試工具的原理、api接口實例、unnittest、五大框架實戰(行為驅動 分布式測試框架 數據驅動測試框架 關鍵詞驅動測試框架 混閤模式測試框架)、常見自動化測試的問題處理
作者簡介
吳曉華,軟件測試界的一個老兵,光榮之路軟件測試開發免費公開課創始人,從事軟件測試工作13年,熱衷於傳遞軟件測試行業的優秀實踐經驗,曾任職於搜狐公司、搜狗公司、Tom在綫等知名企業。自光榮之路軟件測試開發免費公開課創立以來,聽眾數萬人,公開課視頻下載數十萬次,受到廣大測試從業人員的好評。
王晨昕,某大型互聯網高級測試開發,多年的測試開發經驗,喜歡專研各種測試開發技術,並熱衷於分享這些技術。
目錄
第一篇基礎篇
第1章Selenium簡介
1.1Selenium的前世今生
1.2Selenium工具套件介紹
1.3Selenium支持的瀏覽器和平颱
1.3.1Selenium IDE、Selenium 1和Selenium RC支持的瀏覽器和平颱
1.3.2Selenium 2(WebDriver)支持的瀏覽器
1.4Selenium RC和 WebDriver的實現原理
1.4.1Selenium RC的實現原理
1.4.2WebDriver的實現原理
1.4.3Selenium 1.0和WebDriver的特點
1.5Selenium 3的新特性
第2章自動化測試那點事兒
2.1自動化測試目標
2.2管理層的支持
2.3投入産齣比
2.4敏捷開發中的自動化測試應用
2.5自動化測試人員分工
2.6自動化測試工具的選擇和推廣使用
2.6.1自動化測試工具的選擇
2.6.2Selenium WebDriver和QTP工具的特點比較
2.7在項目中實施自動化的最佳實踐
2.8學習Selenium工具的能力要求
第3章自動化測試輔助工具
3.1安裝Firefox瀏覽器
3.2安裝Firebug插件
3.3Firebug插件的使用
3.3.1啓動Firebug插件
3.3.2Firebug插件的常用功能
3.4安裝FirePath插件
3.5FirePath插件的使用
3.5.1FirePath插件中使用XPath定位方式
3.5.2FirePath插件中使用CSS定位方式
3.6IE瀏覽器自帶的輔助開發工具
第4章Selenium IDE
4.1Selenium IDE的定義
4.2安裝Selenium IDE
4.2.1從Selenium官網安裝
4.2.2使用離綫XPI安裝文件安裝
4.3Selenium IDE插件界麵和功能介紹
4.3.1主界麵
4.3.2常用工具欄
4.3.3腳本編輯區域
4.4常用菜單項
4.4.1“文件”菜單
4.4.2“編輯”菜單
4.4.3Actions菜單
4.4.4Option菜單
4.5錄製和迴放腳本實例
4.6Selenium IDE腳本介紹——Selenese
4.7Selenium IDE的基本命令使用實例
4.7.1waitForText、verifyText和assertText命令
4.7.2storeTitle命令和echo命令
4.7.3openWindow命令和selectWindow命令
4.8從Selenium IDE導齣腳本
4.8.1導齣腳本文件
4.8.2將Selenium IDE插件中的某行命令導齣為Python腳本
第5章搭建Python環境和PyCharm集成開發環境
5.1安裝Python並配置Python環境
5.1.1下載並安裝Python解釋器
5.1.2配置Python環境
5.1.3安裝pip
5.2安裝Python集成開發環境PyCharm
5.3新建一個Python工程
第6章Selenium3(WebDriver)的安裝
6.1在Python中安裝WebDriver
6.2第一個WebDriver腳本
6.3各瀏覽器驅動的使用方法
第7章單元測試框架的使用介紹
7.1單元測試的定義
7.2unittest單元測試框架
7.2.1unittest的定義
7.2.2unittest框架的4個重要概念
7.2.3單元測試加載方法
7.2.4測試用例
7.2.5測試集閤
7.2.6按照特定順序執行測試用例
7.2.7忽略某個測試方法
7.2.8命令行模式執行測試用例
7.2.9批量執行測試模塊
7.2.10常用的斷言方法
7.2.11使用HTMLTestRunner生成HTML測試報告
7.3在unittest中運行第一個WebDriver測試用例
第8章頁麵元素定位方法
8.1定位頁麵元素方法匯總
8.2使用ID定位
8.3使用name定位
8.4使用鏈接的全部文字定位
8.5使用部分鏈接文字定位
8.6使用HTML標簽名定位
8.7使用Class名稱定位
8.8使用XPath定位
8.8.1XPath的定義
8.8.2XPath節點
8.8.3XPath定位語法
8.8.4XPath運算符
8.9CSS定位
8.9.1CSS的概念
8.9.2CSS定位語法
8.9.3XPath定位與CSS定位的比較
8.10錶格的定位
8.10.1遍曆錶格所有的單元格
8.10.2定位錶格中的某個元素
8.10.3定位錶格中的子元素
第二篇實戰應用篇
第9章WebDriver的多瀏覽器測試
9.1使用IE瀏覽器進行測試
9.2使用Firefox瀏覽器進行測試
9.3使用Chrome瀏覽器進行測試
第10章WebDriver API詳解
10.1訪問某個網址
10.2網頁的前進和後退
10.3刷新當前網頁
10.4瀏覽器窗口最大化
10.5獲取並設置當前窗口的位置
10.6獲取並設置當前窗口的大小
10.7獲取頁麵的Title屬性值
10.8獲取頁麵HTML源代碼
10.9獲取當前頁麵的URL地址
10.10獲取與切換瀏覽器窗口句柄
10.11獲取頁麵元素的基本信息
10.12獲取頁麵元素的文本內容
10.13判斷頁麵元素是否可見
10.14判斷頁麵元素是否可操作
10.15獲取頁麵元素的屬性
10.16獲取頁麵元素的CSS屬性值
10.17清空輸入框中的內容
10.18在輸入框中輸入指定內容
10.19單擊按鈕
10.20雙擊某個元素
10.21操作單選下拉列錶
10.21.1遍曆所有選項並打印選項顯示的文本和選項值
10.21.2選擇下拉列錶元素的三種方法
10.22斷言單選列錶選項值
10.23操作多選的選擇列錶
10.24操作可以輸入的下拉列錶(輸入的同時模擬按鍵)
10.25操作單選框
10.26操作復選框
10.27斷言頁麵源碼中的關鍵字
10.28對當前瀏覽器窗口截屏
10.29拖拽頁麵元素
10.30模擬鍵盤單個按鍵操作
10.31模擬組閤按鍵操作
10.31.1通過WebDriver內建的模塊模擬組閤鍵
10.31.2通過第三方模塊模擬組閤按鍵
10.31.3通過設置剪貼闆實現復製和粘貼
10.32模擬鼠標右鍵
10.33模擬鼠標左鍵按下與釋放
10.34保持鼠標懸停在某個元素上
10.35判斷頁麵元素是否存在
10.36隱式等待
10.37顯式等待
10.38顯式等待中期望的場景
10.39使用Title屬性識彆和操作新彈齣的瀏覽器窗口
10.40通過頁麵的關鍵內容識彆和操作新瀏覽器窗口
10.41操作Frame中的頁麵元素
10.42使用Frame中的HTML源碼內容操作Frame
10.43操作IFrame中的頁麵元素
10.44操作JavaScript的Alert彈窗
10.45操作JavaScript的confirm彈窗
10.46操作JavaScript的prompt彈窗
10.47操作瀏覽器的Cookie
10.48指定頁麵加載時間
第11章WebDriver高級應用
11.1使用JavaScript操作頁麵元素
11.2操作Web頁麵的滾動條
11.3在Ajax方式産生的浮動框中,單擊選擇包含某個關鍵字的選項
11.4結束Windows中瀏覽器的進程
11.5更改一個頁麵對象的屬性值
11.6無人工乾預地自動下載某個文件
11.7無人工乾預地自動上傳附件
11.7.1使用WebDriver的send_keys方法上傳文件
11.7.2模擬鍵盤操作,實現上傳文件
11.7.3使用第三方工具AutoIt上傳文件
11.8右鍵另存為下載文件
11.9操作日期控件
11.10啓動帶有用戶配置信息的Firefox瀏覽器窗口
11.11UI對象庫
11.12操作富文本框
11.13精確比較頁麵截圖圖片
11.14高亮顯示正在操作的頁麵元素
11.15瀏覽器中新開標簽頁(Tab)
11.16測試過程中發生異常或斷言失敗時進行屏幕截圖
11.17使用日誌模塊記錄測試過程中的信息
11.18封裝操作錶格的公用類
11.19測試HTML5語言實現的視頻播放器
11.20在HTML5的畫布元素上進行繪畫操作
11.21操作HTML5存儲對象
11.22使用Chrome瀏覽器自動將文件下載到指定路徑
11.23修改Chrome設置僞裝成手機M站
11.24屏蔽Chrome的�勃瞚gnore�瞔ertificate�瞖rrors提示及禁用擴展插件並實現
窗口最大化
11.25禁用Chrome瀏覽器的PDF和Flash插件
11.26禁用IE的保護模式
11.27啓動Firefox的同時打開Firebug
11.28禁用Chrome瀏覽器中的Image加載
11.29禁用Firefox瀏覽器中的CSS、Flash及Image加載
第三篇自動化測試框架搭建篇
第12章數據驅動測試
12.1數據驅動概述
12.2數據驅動單元測試的環境準備
12.3使用unittest和ddt進行數據驅動
12.4使用數據文件進行數據驅動
12.5使用Excel進行數據驅動測試
12.6使用XML進行數據驅動測試
12.7使用MySQL數據庫進行數據驅動測試
第13章行為驅動測試
13.1行為驅動開發和lettuce簡介
13.2行為驅動測試的環境準備
13.3第一個英文語言行為驅動測試
13.4通過類模式實現英文行為驅動
13.5lettuce框架的步驟數據錶格
13.6使用WebDriver進行英文語言的行為數據驅動測試
13.7使用WebDriver進行中文語言的行為數據驅動測試
13.8批量執行行為驅動用例集
13.9解決中文描述的場景輸齣到控製颱亂碼
第14章Selenium Grid的使用
14.1Selenium Grid簡介
14.2分布式自動化測試環境準備
14.3Selenium Grid的使用方法
14.3.1遠程調用Firefox瀏覽器進行自動化測試
14.3.2遠程調用IE瀏覽器進行自動化測試
14.3.3遠程調用Chrome瀏覽器進行自動化測試
14.3.4同時支持多個瀏覽器進行自動化測試
14.4結閤unittest完成分布式自動化測試
14.5實現並發的分布式自動化測試
第15章自動化測試框架的搭建及測試實戰
15.1自動化測試框架
15.2數據驅動框架及實戰
15.3關鍵字驅動框架及實戰
15.4關鍵字&&數據混閤驅動框架及實戰
第四篇常見問題和解決方法
第16章自動化測試常見問題和解決方法
16.1如何讓WebDriver支持IE 11
16.2解決“Unexpected error launching Internet Explorer. Browserzoom
level was set to 75%(或其他百分比)”的錯誤
16.3解決某些IE瀏覽器中輸入數字和英文特彆慢的問題
16.4解決Firefox瀏覽器的can�餿 access dead object異常
16.5常見異常和解決方法
Python 自動化測試實戰:從零構建高效健壯的測試體係 本書旨在為廣大軟件測試工程師、開發人員以及對自動化測試感興趣的技術愛好者提供一份全麵、實用的Python自動化測試指南。我們將深入探索如何利用Python語言的強大能力,結閤業界領先的自動化測試框架和工具,構建一套高效、可維護、健壯的自動化測試體係,從而顯著提升軟件的開發效率和産品質量。 本書的核心價值與目標讀者 本書並非專注於某個特定工具的深度講解,而是側重於自動化測試的理念、方法論以及如何將其融會貫通到實際的開發流程中。我們相信,掌握瞭核心的自動化測試思想,再結閤不同的工具,開發者能夠更加靈活和有效地解決實際問題。 核心價值: 體係化思維: 引導讀者建立起完整的自動化測試體係化思維,理解自動化測試在軟件生命周期中的定位和作用。 實戰導嚮: 聚焦於實際項目開發中可能遇到的各種測試場景和挑戰,提供可落地、可復用的解決方案。 技術棧選型與融閤: 介紹並引導讀者閤理選擇適閤自身項目需求的Python自動化測試技術棧,並講解如何將不同的技術進行有效整閤。 質量提升與效率加速: 幫助讀者掌握如何通過自動化測試手段,有效發現潛在缺陷,縮短測試周期,加速産品迭代。 可持續性發展: 強調測試代碼的可維護性和可擴展性,使自動化測試體係能夠隨著項目的發展而持續演進。 目標讀者: 軟件測試工程師: 希望將手動測試經驗轉化為自動化測試技能,提升測試效率和覆蓋率,嚮自動化測試工程師轉型。 開發人員(尤其是Python開發者): 希望通過編寫單元測試、集成測試等,提前發現代碼中的問題,保障代碼質量,提高開發效率。 技術經理/團隊領導: 希望瞭解如何引入和構建自動化測試體係,提升團隊整體的開發和交付能力。 初學者: 對自動化測試有濃厚興趣,希望係統學習Python自動化測試的入門知識和實踐技巧。 資深自動化測試工程師: 尋求更深層次的架構設計、性能優化、以及如何應對復雜項目需求的解決方案。 本書內容結構與深度解析 本書將從自動化測試的基礎概念講起,逐步深入到高級主題,並貫穿大量的實戰案例和代碼示例。 第一部分:自動化測試的基石與思維模式 1. 理解自動化測試的價值與定位: 為何需要自動化測試?(效率、重復性、準確性、迴歸測試) 自動化測試的生命周期管理。 自動化測試與持續集成/持續交付(CI/CD)的深度融閤。 不同類型的自動化測試(單元測試、集成測試、端到端測試、API測試、UI測試)及其適用場景。 建立正確的自動化測試思維:從“測什麼”到“如何測得好”。 2. Python在自動化測試中的優勢: Python作為一種易學易用的語言,為何成為自動化測試的首選。 Python豐富的第三方庫生態係統如何助力自動化測試。 Python的語法特性與測試腳本的編寫。 3. 搭建Python自動化測試環境: Python的安裝與配置。 虛擬環境的使用(venv, virtualenv, conda)及其重要性。 包管理工具(pip)的深入使用。 IDE(如PyCharm, VS Code)的配置與使用技巧。 第二部分:核心自動化測試框架與實踐 1. 單元測試框架:unittest與pytest unittest: unittest的核心概念:TestCase, TestSuite, TestLoader, TextTestRunner。 編寫第一個unittest用例。 setUp/tearDown 方法的使用。 斷言(Assertions)的詳細講解。 參數化測試(Parameterization)的實現。 測試的組織與運行。 pytest: pytest的簡潔語法與強大的功能。 fixture機製:實現依賴注入與代碼復用。 參數化測試(@pytest.mark.parametrize)。 斷言的自由化。 Markers和Skip的使用。 pytest插件係統介紹。 pytest與unittest的對比分析,以及如何進行遷移。 2. API自動化測試:Requests與Pytest HTTP協議基礎迴顧: 請求方法(GET, POST, PUT, DELETE等)、狀態碼、請求頭、請求體。 Requests庫的精通: 發送各種HTTP請求。 處理請求參數、headers、cookies。 響應的處理與解析(JSON, XML)。 異常處理與重試機製。 構建API自動化測試框架: 設計可復用的API請求函數。 使用pytest進行API接口的自動化測試。 參數化API測試用例,提高測試覆蓋率。 數據驅動測試(Data-Driven Testing)在API測試中的應用。 API響應數據的校驗(Schema Validation)。 模擬API服務(Mocking)的常用方法。 3. Web UI自動化測試:Selenium WebDriver(非3.0版本,而是更廣泛的應用) Webdriver的核心原理: WebDriver協議、瀏覽器驅動。 定位元素(Locating Elements): ID, Name, Class Name, Tag Name, Link Text, Partial Link Text。 XPath的精通與最佳實踐。 CSS Selector的強大與靈活。 隱式等待與顯式等待(Implicit Wait vs. Explicit Wait)。 WebDriver API的使用: 導航(Navigation):打開URL, 後退, 前進, 刷新。 元素交互(Element Interaction):點擊, 輸入文本, 清除文本, 獲取屬性, 獲取文本。 處理下拉框(Dropdowns)。 處理復選框與單選按鈕。 處理模態框(Alerts, Confirms, Prompts)。 執行JavaScript。 Page Object Model(POM)設計模式: 為什麼需要POM?(提高代碼可讀性、可維護性、可復用性)。 如何設計Page Objects。 Page Objects與測試用例的解耦。 使用Page Object Model結閤pytest進行Web UI自動化測試: 構建一個完整的POM框架。 參數化Web UI測試用例。 處理復雜的UI交互和同步問題。 數據驅動Web UI測試。 頁麵截圖與報告生成。 Headless Browser測試: PhantomJS (已棄用,但原理介紹), Chrome Headless, Firefox Headless。 瀏覽器自動化的高級主題: 處理iframe。 處理新窗口/新標簽頁。 鼠標懸停(Hover)和拖拽(Drag and Drop)。 上傳文件。 處理Cookie。 第三部分:構建健壯可維護的自動化測試體係 1. 測試數據管理: 測試數據的來源(硬編碼、文件、數據庫)。 CSV, JSON, Excel等格式的數據讀取。 Faker庫:生成高質量的模擬測試數據。 數據驅動測試(DDT)模式的實現與優化。 2. 日誌與報告: Python的logging模塊深入使用。 Allure Reports:生成美觀、交互性強的測試報告。 HTML報告的生成與定製。 在測試報告中嵌入截圖和日誌信息。 3. 異常處理與錯誤定位: 如何優雅地處理測試過程中遇到的各種異常。 編寫健壯的錯誤處理代碼。 利用日誌和截圖幫助快速定位問題。 4. 測試用例設計原則與最佳實踐: 如何編寫清晰、簡潔、可讀性強的測試用例。 如何平衡測試覆蓋率與測試執行時間。 邊界值分析、等價類劃分等測試用例設計方法在自動化中的應用。 避免“脆弱”的測試用例。 5. 測試框架的組織與管理: 項目結構設計:如何組織測試文件、Page Objects、測試數據、工具類等。 配置管理:如何管理不同的測試環境配置。 使用Pytest的命令行選項進行靈活的測試執行。 第四部分:自動化測試的進階與生態 1. 自動化測試與CI/CD集成: Jenkins, GitLab CI, GitHub Actions等CI/CD工具的介紹。 如何在CI/CD流水綫中執行自動化測試。 構建觸發器、定時任務、郵件通知。 實現自動化測試結果的反饋。 2. 性能測試基礎(可選,簡要介紹): JMeter(配閤Python腳本)或Locust(Python編寫)的簡要介紹。 何時考慮進行性能測試。 3. 移動端自動化測試入門(簡要介紹): Appium簡介。 Python與Appium的結閤。 4. 代碼審查與重構(針對測試代碼): 如何保持測試代碼的質量。 定期重構測試代碼,使其更具可維護性。 5. 團隊協作與知識共享: 如何與團隊成員共享自動化測試的經驗和成果。 建立自動化測試的知識庫。 本書特色: 理論與實踐的完美結閤: 每介紹一個概念,都會緊隨其後的實際代碼演示和案例分析。 循序漸進的難度設計: 從基礎概念到高級應用,逐步引導讀者掌握自動化測試的精髓。 豐富的代碼示例: 提供大量可以直接復製粘貼並運行的代碼片段,方便讀者學習和實踐。 強調可維護性與可擴展性: 貫穿始終地講解如何編寫高質量、易於維護和擴展的自動化測試代碼。 廣泛的技術覆蓋: 介紹Python主流的自動化測試框架和工具,為讀者提供更廣闊的選擇空間。 通過本書的學習,您將能夠獨立設計、開發和維護一套完整的Python自動化測試體係,有效地提升軟件産品的質量和開發團隊的效率,為您的職業生涯增添重要的競爭力。