注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)Python測(cè)試驅(qū)動(dòng)開(kāi)發(fā):使用Django Selenium和JavaScript進(jìn)行Web編程

Python測(cè)試驅(qū)動(dòng)開(kāi)發(fā):使用Django Selenium和JavaScript進(jìn)行Web編程

Python測(cè)試驅(qū)動(dòng)開(kāi)發(fā):使用Django Selenium和JavaScript進(jìn)行Web編程

定 價(jià):¥119.00

作 者: [英] 哈利·帕西瓦爾(Harry J.W. Percival) 著,安道 譯
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買這本書(shū)可以去


ISBN: 9787115485571 出版時(shí)間: 2018-07-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 454 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書(shū)從基礎(chǔ)的知識(shí)開(kāi)始,講解Web開(kāi)發(fā)的整個(gè)流程,展示如何使用Python做測(cè)試驅(qū)動(dòng)開(kāi)發(fā)。本書(shū)由三個(gè)部分組成。第一部分介紹了測(cè)試驅(qū)動(dòng)開(kāi)發(fā)和Django的基礎(chǔ)知識(shí),并在每個(gè)階段進(jìn)行嚴(yán)格的單元測(cè)試。第二部分討論了Web開(kāi)發(fā)要素,探討了Web開(kāi)發(fā)過(guò)程中不可避免的問(wèn)題,以及如何通過(guò)測(cè)試解決這些問(wèn)題。第三部分探討了一些話題,如模擬技術(shù)、集成第三方認(rèn)證系統(tǒng)、Ajax、測(cè)試固件以及持續(xù)集成等。第2版全部使用Python 3,并針對(duì)新版Django全面升級(jí),介紹了由外而內(nèi)的測(cè)試驅(qū)動(dòng)開(kāi)發(fā)流程。本書(shū)適合Web開(kāi)發(fā)人員閱讀。

作者簡(jiǎn)介

  哈利·J.W. 帕西瓦爾(Harry J.W. Percival),TDD積極踐行者,曾參與開(kāi)發(fā)電子制作表軟件先驅(qū)Resolver One;目前jiu職于PythonAnywhere公司,經(jīng)常受邀參加TDD和Python開(kāi)發(fā)主題演講、研討會(huì);取得了利物浦大學(xué)計(jì)算機(jī)科學(xué)碩士學(xué)位和劍橋大學(xué)哲學(xué)碩士學(xué)位。

圖書(shū)目錄

前言 xv
準(zhǔn)備工作和應(yīng)具備的知識(shí) xxi
配套視頻 xxviii
致謝 xxix
第 一部分 TDD和Django基礎(chǔ)
第 1章 使用功能測(cè)試協(xié)助安裝Django 2
1.1 遵從測(cè)試山羊的教誨,沒(méi)有測(cè)試什么也別做 2
1.2 讓Django運(yùn)行起來(lái) 4
1.3 創(chuàng)建Git倉(cāng)庫(kù) 6
第 2 章 使用unittest模塊擴(kuò)展功能測(cè)試 10
2.1 使用功能測(cè)試驅(qū)動(dòng)開(kāi)發(fā)一個(gè)最簡(jiǎn)可用的應(yīng)用 10
2.2 Python標(biāo)準(zhǔn)庫(kù)中的unittest模塊 12
2.3 提交 14
第3章 使用單元測(cè)試測(cè)試簡(jiǎn)單的首頁(yè) 16
3.1 第 一個(gè)Django應(yīng)用,第 一個(gè)單元測(cè)試 16
3.2 單元測(cè)試及其與功能測(cè)試的區(qū)別 17
3.3 Django中的單元測(cè)試 18
3.4 Django中的MVC、URL和視圖函數(shù) 19
3.5 終于可以編寫一些應(yīng)用代碼了 20
3.6 urls.py 22
3.7 為視圖編寫單元測(cè)試 23
第4章 測(cè)試(及重構(gòu))的目的 28
4.1 編程就像從井里打水 28
4.2 使用Selenium測(cè)試用戶交互 30
4.3 遵守“不測(cè)試常量”規(guī)則,使用模板解決這個(gè)問(wèn)題 32
4.3.1 使用模板重構(gòu) 33
4.3.2 Django測(cè)試客戶端 35
4.4 關(guān)于重構(gòu) 37
4.5 接著修改首頁(yè) 38
4.6 總結(jié):TDD流程 39
第5章 保存用戶輸入:測(cè)試數(shù)據(jù)庫(kù) 42
5.1 編寫表單,發(fā)送POST請(qǐng)求 42
5.2 在服務(wù)器中處理POST請(qǐng)求 45
5.3 把Python變量傳入模板中渲染 46
5.4 事不過(guò)三,三則重構(gòu) 50
5.5 Django ORM和第 一個(gè)模型 51
5.5.1 第 一個(gè)數(shù)據(jù)庫(kù)遷移 53
5.5.2 測(cè)試向前走得挺遠(yuǎn) 53
5.5.3 添加新字段就要?jiǎng)?chuàng)建新遷移 54
5.6 把POST請(qǐng)求中的數(shù)據(jù)存入數(shù)據(jù)庫(kù) 55
5.7 處理完P(guān)OST請(qǐng)求后重定向 57
5.8 在模板中渲染待辦事項(xiàng) 59
5.9 使用遷移創(chuàng)建生產(chǎn)數(shù)據(jù)庫(kù) 61
5.10 回顧 64
第6章 改進(jìn)功能測(cè)試:確保隔離,去掉含糊的休眠 66
6.1 確保功能測(cè)試之間相互隔離 66
6.2 升級(jí)Selenium和Geckodriver 70
6.3 隱式等待、顯式等待和含糊的time.sleep 70
第7章 步步為營(yíng) 75
7.1 必要時(shí)做少量的設(shè)計(jì) 75
7.1.1 不要預(yù)先做大量設(shè)計(jì) 75
7.1.2 YAGNI 76
7.1.3 REST(式) 76
7.2 使用TDD實(shí)現(xiàn)新設(shè)計(jì) 77
7.3 確保出現(xiàn)回歸測(cè)試 78
7.4 逐步迭代,實(shí)現(xiàn)新設(shè)計(jì) 80
7.5 自成一體的第 一步:新的URL 81
7.5.1 一個(gè)新URL 82
7.5.2 一個(gè)新視圖函數(shù) 82
7.6 變綠了嗎?該重構(gòu)了 84
7.7 再邁一小步:一個(gè)新模板,用于查看清單 84
7.8 第三小步:用于添加待辦事項(xiàng)的URL 86
7.8.1 用來(lái)測(cè)試新建清單的測(cè)試類 87
7.8.2 用于新建清單的URL和視圖 88
7.8.3 刪除當(dāng)前多余的代碼和測(cè)試 89
7.8.4 出現(xiàn)回歸!讓表單指向剛添加的新URL 89
7.9 下定決心,調(diào)整模型 90
7.9.1 外鍵關(guān)系 92
7.9.2 根據(jù)新模型定義調(diào)整其他代碼 93
7.10 每個(gè)列表都應(yīng)該有自己的URL 95
7.10.1 捕獲URL中的參數(shù) 96
7.10.2 按照新設(shè)計(jì)調(diào)整new_list視圖 97
7.11 功能測(cè)試又檢測(cè)到回歸 98
7.12 還需要一個(gè)視圖,把待辦事項(xiàng)加入現(xiàn)有清單 99
7.12.1 小心霸道的正則表達(dá)式 99
7.12.2 最后一個(gè)新URL 100
7.12.3 最后一個(gè)新視圖 101
7.12.4 直接測(cè)試響應(yīng)上下文對(duì)象 102
7.13 使用URL引入做最后一次重構(gòu) 103
第二部分 Web 開(kāi)發(fā)要素
第8章 美化網(wǎng)站:布局、樣式及其測(cè)試方法 108
8.1 如何在功能測(cè)試中測(cè)試布局和樣式 108
8.2 使用CSS框架美化網(wǎng)站 111
8.3 Django模板繼承 112
8.4 集成Bootstrap 114
8.5 Django中的靜態(tài)文件 115
8.6 使用Bootstrap中的組件改進(jìn)網(wǎng)站外觀 117
8.6.1 超大文本塊 118
8.6.2 大型輸入框 118
8.6.3 樣式化表格 118
8.7 使用自己編寫的CSS 118
8.8 補(bǔ)遺:collectstatic命令和其他靜態(tài)目錄 120
8.9 沒(méi)談到的話題 122
第9章 使用過(guò)渡網(wǎng)站測(cè)試部署 123
9.1 TDD以及部署的危險(xiǎn)區(qū)域 124
9.2 一如既往,先寫測(cè)試 125
9.3 注冊(cè)域名 127
9.4 手動(dòng)配置托管網(wǎng)站的服務(wù)器 127
9.4.1 選擇在哪里托管網(wǎng)站 127
9.4.2 搭建服務(wù)器 128
9.4.3 用戶賬戶、SSH和權(quán)限 128
9.4.4 安裝Nginx 128
9.4.5 安裝Python 3.6 129
9.4.6 解析過(guò)渡環(huán)境和線上環(huán)境所用的域名 130
9.4.7 使用功能測(cè)試確認(rèn)域名可用而且Nginx正在運(yùn)行 130
9.5 手動(dòng)部署代碼 130
9.5.1 調(diào)整數(shù)據(jù)庫(kù)的位置 131
9.5.2 手動(dòng)創(chuàng)建虛擬環(huán)境,使用requirements.txt 133
9.5.3 簡(jiǎn)單配置Nginx 134
9.5.4 使用遷移創(chuàng)建數(shù)據(jù)庫(kù) 136
9.6 手動(dòng)部署大功告成 137
第 10章 為部署到生產(chǎn)環(huán)境做好準(zhǔn)備 139
10.1 換用Gunicorn 139
10.2 讓Nginx伺服靜態(tài)文件 140
10.3 換用Unix套接字 141
10.4 把DEBUG設(shè)為False,設(shè)置ALLOWED_HOSTS 142
10.5 使用Systemd確保引導(dǎo)時(shí)啟動(dòng)Gunicorn 143
10.6 考慮自動(dòng)化 144
10.7 保存進(jìn)度 147
第 11章 使用Fabric自動(dòng)部署 148
11.1 分析一個(gè)Fabric部署腳本 149
11.1.1 分析一個(gè)Fabric部署腳本 149
11.1.2 使用Git拉取源碼 150
11.1.3 更新settings.py 151
11.1.4 更新虛擬環(huán)境 151
11.1.5 需要時(shí)遷移數(shù)據(jù)庫(kù) 152
11.2 試用部署腳本 152
11.2.1 部署到線上服務(wù)器 154
11.2.2 使用sed配置Nginx和Gunicorn 155
11.3 使用Git標(biāo)簽標(biāo)注發(fā)布狀態(tài) 157
11.4 延伸閱讀 157
第 12章 輸入驗(yàn)證和測(cè)試的組織方式 159
12.1 針對(duì)驗(yàn)證的功能測(cè)試:避免提交空待辦事項(xiàng) 159
12.1.1 跳過(guò)測(cè)試 160
12.1.2 把功能測(cè)試分拆到多個(gè)文件中 161
12.1.3 運(yùn)行單個(gè)測(cè)試文件 163
12.2 功能測(cè)試新工具:通用顯式等待輔助方法 164
12.3 補(bǔ)完功能測(cè)試 167
12.4 重構(gòu)單元測(cè)試,分拆成多個(gè)文件 168
第 13章 數(shù)據(jù)庫(kù)層驗(yàn)證 171
13.1 模型層驗(yàn)證 172
13.1.1 self.a(chǎn)ssertRaises上下文管理器 172
13.1.2 Django怪異的表現(xiàn):保存時(shí)不驗(yàn)證數(shù)據(jù) 173
13.2 在視圖中顯示模型驗(yàn)證錯(cuò)誤 173
13.3 Django模式:在渲染表單的視圖中處理POST請(qǐng)求 177
13.3.1 重構(gòu):把new_item實(shí)現(xiàn)的功能移到view_list中 178
13.3.2 在view_list視圖中執(zhí)行模型驗(yàn)證 180
13.4 重構(gòu):去除硬編碼的URL 182
13.4.1 模板標(biāo)簽{% url %} 182
13.4.2 重定向時(shí)使用get_absolute_url 183
第 14章 簡(jiǎn)單的表單 186
14.1 把驗(yàn)證邏輯移到表單中 186
14.1.1 使用單元測(cè)試探索表單API 187
14.1.2 換用Django中的ModelForm類 188
14.1.3 測(cè)試和定制表單驗(yàn)證 189
14.2 在視圖中使用這個(gè)表單 191
14.2.1 在處理GET請(qǐng)求的視圖中使用這個(gè)表單 191
14.2.2 大量查找和替換 192
14.3 在處理POST請(qǐng)求的視圖中使用這個(gè)表單 194
14.3.1 修改new_list視圖的單元測(cè)試 195
14.3.2 在視圖中使用這個(gè)表單 196
14.3.3 使用這個(gè)表單在模板中顯示錯(cuò)誤消息 196
14.4 在其他視圖中使用這個(gè)表單 197
14.4.1 定義輔助方法,簡(jiǎn)化測(cè)試 197
14.4.2 意想不到的好處:HTML5自帶的客戶端驗(yàn)證 199
14.5 值得鼓勵(lì) 201
14.6 這難道不是浪費(fèi)時(shí)間嗎 201
14.7 使用表單自帶的save方法 202
第 15章 高級(jí)表單 205
15.1 針對(duì)重復(fù)待辦事項(xiàng)的功能測(cè)試 205
15.1.1 在模型層禁止重復(fù) 206
15.1.2 題外話:查詢集合排序和字符串表示形式 208
15.1.3 重寫舊模型測(cè)試 210
15.1.4 保存時(shí)確實(shí)會(huì)顯示完整性錯(cuò)誤 211
15.2 在視圖層試驗(yàn)待辦事項(xiàng)重復(fù)驗(yàn)證 212
15.3 處理唯一性驗(yàn)證的復(fù)雜表單 213
15.4 在清單視圖中使用ExistingListItemForm 215
15.5 小結(jié):目前所學(xué)的Django測(cè)試知識(shí) 217
第 16章 試探JavaScript 219
16.1 從功能測(cè)試開(kāi)始 219
16.2 安裝一個(gè)基本的JavaScript測(cè)試運(yùn)行程序 221
16.3 使用jQuery和固件元素 223
16.4 為想要實(shí)現(xiàn)的功能編寫JavaScript單元測(cè)試 225
16.5 固件、執(zhí)行順序和全局狀態(tài):JavaScript測(cè)試的重大挑戰(zhàn) 227
16.5.1 使用console.log打印調(diào)試信息 227
16.5.2 使用初始化函數(shù)精確控制執(zhí)行時(shí) 229
16.6 經(jīng)驗(yàn)做法:onload樣板代碼和命名空間 230
16.7 JavaScript測(cè)試在TDD循環(huán)中的位置 232
16.8 一些缺憾 232
第 17章 部署新代碼 234
17.1 部署到過(guò)渡服務(wù)器 234
17.2 部署到線上服務(wù)器 235
17.3 如果看到數(shù)據(jù)庫(kù)錯(cuò)誤該怎么辦 235
17.4 總結(jié):為這次新發(fā)布打上Git標(biāo)簽 235
第三部分 高級(jí)話題
第 18章 用戶身份驗(yàn)證、探究及去掉探究代碼 238
18.1 無(wú)密碼驗(yàn)證 238
18.2 探索性編程(又名“探究”) 239
18.2.1 為此次探究新建一個(gè)分支 239
18.2.2 前端登錄UI 240
18.2.3 從Django中發(fā)出郵件 240
18.2.4 使用環(huán)境變量,避免源碼中出現(xiàn)機(jī)密信息 242
18.2.5 在數(shù)據(jù)庫(kù)中存儲(chǔ)令牌 243
18.2.6 自定義身份驗(yàn)證模型 243
18.2.7 結(jié)束自定義Django身份驗(yàn)證功能 224
18.3 去掉探究代碼 248
18.4 一個(gè)極簡(jiǎn)的自定義用戶模型 251
18.5 令牌模型:把電子郵件地址與唯一的ID關(guān)聯(lián)起來(lái) 254
第 19章 使用馭件測(cè)試外部依賴或減少重復(fù) 257
19.1 開(kāi)始之前布好基本管道 257
19.2 自己動(dòng)手模擬(打猴子補(bǔ)?。?58
19.3 Python的模擬庫(kù) 261
19.3.1 使用unittest.patch 261
19.3.2 讓測(cè)試向前邁一小步 263
19.3.3 測(cè)試Django消息框架 263
19.3.4 在HTML中添加消息 265
19.3.5 構(gòu)建登錄URL 266
19.3.6 確認(rèn)給用戶發(fā)送了帶有令牌的鏈接 267
19.4 去除自定義的身份驗(yàn)證后端中的探究代碼 269
19.4.1 一個(gè)if語(yǔ)句需要一個(gè)測(cè)試 269
19.4.2 get_user方法 272
19.4.3 在登錄視圖中使用自定義的驗(yàn)證后端 273
19.5 使用馭件的另一個(gè)原因:減少重復(fù) 274
19.5.1 使用馭件的返回值 277
19.5.2 在類一級(jí)上打補(bǔ)丁 278
19.6 關(guān)鍵時(shí)刻:功能測(cè)試能通過(guò)嗎 279
19.7 理論上正常,那么實(shí)際呢 281
19.8 完善功能測(cè)試,測(cè)試退出功能 283
第 20章 測(cè)試固件和一個(gè)顯式等待裝飾器 285
20.1 事先創(chuàng)建好會(huì)話,跳過(guò)登錄過(guò)程 285
20.2 顯式等待輔助方法最終版:wait裝飾器 290
第 21章 服務(wù)器端調(diào)試技術(shù) 293
21.1 實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn):在過(guò)渡服務(wù)器中捕獲最后的問(wèn)題 293
21.2 在服務(wù)器上通過(guò)環(huán)境變量設(shè)定機(jī)密信息 295
21.3 調(diào)整功能測(cè)試,以便通過(guò)POP3測(cè)試真實(shí)的電子郵件 296
21.4 在過(guò)渡服務(wù)器中管理測(cè)試數(shù)據(jù)庫(kù) 299
21.4.1 創(chuàng)建會(huì)話的Django管理命令 300
21.4.2 讓功能測(cè)試在服務(wù)器上運(yùn)行管理命令 301
21.4.3 直接在Python代碼中使用Fabric 302
21.4.4 回顧:在本地服務(wù)器和過(guò)渡服務(wù)器中創(chuàng)建會(huì)話的方式 303
21.5 集成日志相關(guān)的代碼 304
21.6 小結(jié) 305
第 22章 完成“My Lists”頁(yè)面:由外而內(nèi)的TDD 306
22.1 對(duì)立技術(shù):“由內(nèi)而外” 306
22.2 為什么選擇使用“由外而內(nèi)” 307
22.3 “My Lists”頁(yè)面的功能測(cè)試 307
22.4 外層:表現(xiàn)層和模板 309
22.5 下移一層到視圖函數(shù)(控制器) 309
22.6 使用由外而內(nèi)技術(shù),再讓一個(gè)測(cè)試通過(guò) 310
22.6.1 快速重組模板的繼承層級(jí) 311
22.6.2 使用模板設(shè)計(jì)API 311
22.6.3 移到下一層:視圖向模板中傳入什么 313
22.7 視圖層的下一個(gè)需求:新建清單時(shí)應(yīng)該記錄屬主 313
22.8 下移到模型層 315
第 23章 測(cè)試隔離和“傾聽(tīng)測(cè)試的心聲” 319
23.1 重溫抉擇時(shí)刻:視圖層依賴于尚未編寫的模型代碼 319
23.2 首先嘗試使用馭件實(shí)現(xiàn)隔離 320
23.3 傾聽(tīng)測(cè)試的心聲:丑陋的測(cè)試表明需要重構(gòu) 323
23.4 以完全隔離的方式重寫視圖測(cè)試 323
23.4.1 為了新測(cè)試的健全性,保留之前的整合測(cè)試組件 324
23.4.2 完全隔離的新測(cè)試組件 324
23.4.3 站在協(xié)作者的角度思考問(wèn)題 324
23.5 下移到表單層 329
23.6 下移到模型層 332
23.7 關(guān)鍵時(shí)刻,以及使用模擬技術(shù)的風(fēng)險(xiǎn) 335
23.8 把層與層之間的交互當(dāng)作“合約” 336
23.8.1 找出隱形合約 337
23.8.2 修正由于疏忽導(dǎo)致的問(wèn)題 338
23.9 還缺一個(gè)測(cè)試 339
23.10 清理:保留哪些整合測(cè)試 340
23.10.1 刪除表單層多余的代碼 340
23.10.2 刪除以前實(shí)現(xiàn)的視圖 341
23.10.3 刪除視圖層多余的代碼 342
23.11 總結(jié):什么時(shí)候編寫隔離測(cè)試,什么時(shí)候編寫整合測(cè)試 343
23.11.1 以復(fù)雜度為準(zhǔn)則 344
23.11.2 兩種測(cè)試都要寫嗎 344
23.11.3 繼續(xù)前行 344
第 24章 持續(xù)集成 346
24.1 安裝Jenkins 346
24.2 配置Jenkins 347
24.2.1 首次解鎖 348
24.2.2 現(xiàn)在建議安裝的插件 348
24.2.3 配置管理員用戶 348
24.2.4 添加插件 350
24.2.5 告訴Jenkins到哪里尋找Python 3和Xvfb 350
24.2.6 設(shè)置HTTPS 351
24.3 設(shè)置項(xiàng)目 351
24.4 第 一次構(gòu)建 352
24.5 設(shè)置虛擬顯示器,讓功能測(cè)試能在無(wú)界面的環(huán)境中運(yùn)行 354
24.6 截圖 356
24.7 如有疑問(wèn),增加超時(shí)試試 359
24.8 使用PhantomJS運(yùn)行QUnit JavaScript測(cè)試 359
24.8.1 安裝node 359
24.8.2 在Jenkins中添加構(gòu)建步驟 361
24.9 CI服務(wù)器能完成的其他操作 362
第 25章 簡(jiǎn)單的社會(huì)化功能、頁(yè)面模式以及練習(xí) 363
25.1 有多個(gè)用戶以及使用addCleanup的功能測(cè)試 363
25.2 頁(yè)面模式 365
25.3 擴(kuò)展功能測(cè)試測(cè)試第二個(gè)用戶和“My Lists”頁(yè)面 367
25.4 留給讀者的練習(xí) 368
第 26章 測(cè)試運(yùn)行速度的快慢和熾熱的巖漿 371
26.1 正題:?jiǎn)卧獪y(cè)試除了運(yùn)行速度超快之外還有其他優(yōu)勢(shì) 372
26.1.1 測(cè)試運(yùn)行得越快,開(kāi)發(fā)速度越快 372
26.1.2 神賜的心流狀態(tài) 372
26.1.3 經(jīng)常不想運(yùn)行速度慢的測(cè)試,導(dǎo)致代碼變壞 373
26.1.4 現(xiàn)在還行,不過(guò)隨著時(shí)間推移,整合測(cè)試會(huì)變得越來(lái)越慢 373
26.1.5 別只聽(tīng)我一個(gè)人說(shuō) 373
26.1.6 單元測(cè)試能驅(qū)使我們實(shí)現(xiàn)好的設(shè)計(jì) 373
26.2 純粹的單元測(cè)試有什么問(wèn)題 373
26.2.1 隔離的測(cè)試難讀也難寫 373
26.2.2 隔離測(cè)試不會(huì)自動(dòng)測(cè)試集成情況 374
26.2.3 單元測(cè)試幾乎不能捕獲意料之外的問(wèn)題 374
26.2.4 使用馭件的測(cè)試可能和實(shí)現(xiàn)方式聯(lián)系緊密 374
26.2.5 這些問(wèn)題都可以解決 374
26.3 合題:我們到底想從測(cè)試中得到什么 374
26.3.1 正確性 374
26.3.2 簡(jiǎn)潔可維護(hù)的代碼 375
26.3.3 高效的工作流程 375
26.3.4 根據(jù)所需的優(yōu)勢(shì)評(píng)估測(cè)試 375
26.4 架構(gòu)方案 375
26.4.1 端口和適配器(或六邊形、簡(jiǎn)潔)架構(gòu) 376
26.4.2 函數(shù)式核心,命令式外殼 377
26.5 小結(jié) 377
遵從測(cè)試山羊的教誨 379
附錄A PythonAnywhere 381
附錄B 基于類的Django 視圖 385
附錄C 使用Ansible 配置服務(wù)器 394
附錄D 測(cè)試數(shù)據(jù)庫(kù)遷移 398
附錄E 行為驅(qū)動(dòng)開(kāi)發(fā) 403
附錄F 構(gòu)建一個(gè)REST API:JSON、Ajax 和JavaScript 模擬技術(shù) 416
附錄G Django-Rest-Framework 433
附錄H 速查表 443
附錄I 接下來(lái)做什么 447
附錄J 示例源碼 451
參考書(shū)目 453
作者簡(jiǎn)介 454
封面介紹 454

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) www.autoforsalebyowners.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)