Python Web開發:測試驅動方法

Python Web開發:測試驅動方法
定價:594
NT $ 446
 

內容簡介

本書從基礎的知識開始,講解Web開發的整個流程,展示如何使用Python做測試驅動開發。

本書由三個部分組成。介紹了測試驅動開發和Django的基礎知識。第二部分討論了Web開發要素,探討了Web開發過程中不可避免的問題,及如何通過測試解決這些問題。第三部分探討了一些高級話題,如模擬技術、集成第三方插件、Ajax、測試固件、持續集成等。本書適合Web開發人員閱讀。

Harry J .W. Percival目前就職於Python Anywhere LLP公司,他在各種演講、研討會和開發者大會上積極推廣TDD。他在利物浦大學獲得計算機科學碩士學位,在劍橋大學獲得哲學碩士學位。
 

目錄

前言
准備工作和應具備的知識
致謝
第一部分 TDD 和Django 基礎
第1 章 使用功能測試協助安裝Django 3
1.1 遵從測試山羊的教誨,沒有測試什麼也別做 3
1.2 讓Django 運行起來 6
1.3 創建Git 倉庫 7
第2 章 使用unittest 模塊擴展功能測試 11
2.1 使用功能測試驅動開發一個最簡可用的應用 11
2.2 Python 標准庫中的unittest 模塊 14
2.3 隱式等待 16
2.4 提交 16
第3 章 使用單元測試測試簡單的首頁 18
3.1 第一個Django 應用,第一個單元測試 19
3.2 單元測試及其與功能測試的區別 19
3.3 Django 中的單元測試 20
3.4 Django 中的MVC、URL 和視圖函數 21
3.5 終於可以編寫一些應用代碼了 22
3.6 urls.py 24
3.7 為視圖編寫單元測試 27
第4 章 編寫這些測試有什麼用 31
4.1 編程就像從井里打水 31
4.2 使用Selenium 測試用戶交互 33
4.3 遵守「不測試常量」規則,使用模板解決這個問題 35
4.4 關於重構 39
4.5 接着修改首頁 40
4.6 總結:TDD 流程 42
第5 章 保存用戶輸入 45
5.1 編寫表單,發送POST 請求 45
5.2 在服務器中處理POST 請求 48
5.3 把Python 變量傳入模板中渲染 49
5.4 事不過三,三則重構 53
5.5 Django ORM 和第一個模型 54
5.5.1 第一個數據庫遷移 56
5.5.2 測試向前走得挺遠 57
5.5.3 添加新字段就要創建新遷移 57
5.6 把POST 請求中的數據存入數據庫 58
5.7 處理完POST 請求后重定向 61
5.8 在模板中渲染待辦事項 63
5.9 使用遷移創建生產數據庫 65
第6 章 完成最簡可用的網站 70
6.1 確保功能測試之間相互隔離 70
6.2 必要時做少量的設計 74
6.2.1 YAGNI 74
6.2.2 REST 75
6.3 使用TDD 實現新設計 76
6.4 逐步迭代,實現新設計 78
6.5 使用Django 測試客戶端一起測試視圖、模板和URL 80
6.5.1 一個新測試類 80
6.5.2 一個新URL 81
6.5.3 一個新視圖函數 81
6.5.4 一個新模板,用於查看清單 82
6.6 用於添加待辦事項的URL 和視圖 85
6.6.1 用來測試新建清單的測試類 85
6.6.2 用於新建清單的URL 和視圖 86
6.6.3 刪除當前多余的代碼和測試 88
6.6.4 讓表單指向剛添加的新URL 88
6.7 調整模型 89
6.7.1 通過外鍵實現的關聯 91
6.7.2 根據新模型定義調整其他代碼 92
6.8 每個列表都應該有自己的URL 94
6.8.1 捕獲URL 中的參數 95
6.8.2 按照新設計調整new_list 視圖 96
6.9 還需要一個視圖,把待辦事項加入現有清單 97
6.9.1 小心霸道的正則表達式 98
6.9.2 最后一個新URL 98
6.9.3 最后一個新視圖 99
6.9.4 如何在表單中使用那個URL 100
6.10 使用URL 引入做最后一次重構 102
第二部分 Web 開發要素
第7 章 美化網站:布局、樣式及其測試方法 106
7.1 如何在功能測試中測試布局和樣式 106
7.2 使用CSS 框架美化網站 109
7.3 Django 模板繼承 111
7.4 集成Bootstrap 112
7.5 Django 中的靜態文件 114
7.6 使用Bootstrap 中的組件改進網站外觀 116
7.6.1 超大文本塊 116
7.6.2 大型輸入框 116
7.6.3 樣式化表格 117
7.7 使用自己編寫的CSS 117
7.8 補遺:collectstatic 命令和其他靜態目錄 118
7.9 沒談到的話題 121
第8 章 使用過渡網站測試部署 122
8.1 TDD 以及部署的危險區域 123
8.2 一如既往,先寫測試 124
8.3 注冊域名 126
8.4 手動配置托管網站的服務器 126
8.4.1 選擇在哪里托管網站 127
8.4.2 搭建服務器 127
8.4.3 用戶賬戶、SSH 和權限 128
8.4.4 安裝Nginx 128
8.4.5 解析過渡環境和線上環境所用的域名 129
8.4.6 使用功能測試確認域名可用而且Nginx 正在運行 130
8.5 手動部署代碼 130
8.5.1 調整數據庫的位置 131
8.5.2 創建虛擬環境 133
8.5.3 簡單配置Nginx 135
8.5.4 使用遷移創建數據庫 137
8.6 為部署到生產環境做好准備 138
8.6.1 換用Gunicorn 138
8.6.2 讓Nginx 伺服靜態文件 139
8.6.3 換用Unix 套接字 140
8.6.4 把DEBUG 設為False,設置ALLOWED_HOSTS 141
8.6.5 使用Upstart 確保引導時啟動Gunicorn 141
8.6.6 保存改動:把Gunicorn 添加到requirements.txt 142
8.7 自動化 143
第9 章 使用Fabric 自動部署 147
9.1 分析一個Fabric 部署腳本 148
9.2 試用部署腳本 151
9.2.1 部署到線上服務器 153
9.2.2 使用sed 配置Nginx 和Gunicorn 155
9.3 使用Git 標簽標注發布狀態 155
9.4 延伸閱讀 156
第10 章 輸入驗證和測試的組織方式 158
10.1 針對驗證的功能測試:避免提交空待辦事項 158
10.1.1 跳過測試 159
10.1.2 把功能測試分拆到多個文件中 160
10.1.3 運行單個測試文件 162
10.1.4 填充功能測試 163
10.2 使用模型層驗證 164
10.2.1 重構單元測試,分拆成多個文件 164
10.2.2 模型驗證的單元測試和self.assertRaises 上下文管理器 165
10.2.3 Django 怪異的表現:保存時不驗證數據 166
10.3 在視圖中顯示模型驗證錯誤 167
10.4 Django 模式:在渲染表單的視圖中處理POST 請求 171
10.4.1 重構:把new_item 實現的功能移到view_list 中 172
10.4.2 在view_list 視圖中執行模型驗證 174
10.5 重構:去除硬編碼的URL 176
10.5.1 模板標簽{% url %} 176
10.5.2 重定向時使用get_absolute_url 177
第11 章 簡單的表單 181
11.1 把驗證邏輯移到表單中 181
11.1.1 使用單元測試探索表單API 182
11.1.2 換用Django 中的ModelForm 類 183
11.1.3 測試和定制表單驗證 184
11.2 在視圖中使用這個表單 186
11.2.1 在處理GET 請求的視圖中使用這個表單 187
11.2.2 大量查找和替換 189
11.3 在處理POST 請求的視圖中使用這個表單 191
11.3.1 修改new_list 視圖的單元測試 191
11.3.2 在視圖中使用這個表單 192
11.3.3 使用這個表單在模板中顯示錯誤消息 193
11.4 在其他視圖中使用這個表單 194
11.5 使用表單自帶的save 方法 196
第12 章 高級表單 199
12.1 針對重復待辦事項的功能測試 199
12.1.1 在模型層禁止重復 200
12.1.2 題外話:查詢集合排序和字符串表示形式 202
12.1.3 重寫舊模型測試 204
12.1.4 保存時確實會顯示完整性錯誤 205
12.2 在視圖層試驗待辦事項重復驗證 206
12.3 處理唯一性驗證的復雜表單 207
12.4 在清單視圖中使用ExistingListItemForm 209
第13 章 試探JavaScript 213
13.1 從功能測試開始 213
13.2 安裝一個基本的JavaScript 測試運行程序 214
13.3 使用iQuery和<div>固件元素 217
13.4 為想要實現的功能編寫JavaScript單元測試 219
13.5 JavaScript測試在TDD循環中的位置 221
13.6 經驗做法:onload樣板代碼和命名空間 222
13.7 一些缺憾 223
第14章 部署新代碼 224
14.1 部署到過渡服務器 224
14.2 部署到線上服務器 225
14.3 如果看到數據庫錯誤該怎麼辦 225
14.4 總結:為這次新發布打上Git標簽 225
……
第三部分 高級話題
遵從測試山羊的教誨 383
附錄A PythonAnywhere 385
附錄B 基於類的Django視圖 388
附錄C 使用Ansible配置服務器 398
附錄D 測試數據庫遷移 402
附錄E 接下來做什麼 407
附錄F 速查表 411
附錄G 參考書目 415
作者簡介 416
封面介紹 416
網路書店 類別 折扣 價格
  1. 新書
    75
    $446