Python测试驱动开发 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
Python测试驱动开发电子书下载地址
内容简介:
本书从最基础的知识开始,讲解 Web 开发的整个流程,展示如何使用 Python 做测试驱动开发。本书由三个部分组成。第一部分介绍了测试驱动开发和 Django 的基础知识,并在每个阶段进行严格的单元测试。第二部分讨论了 Web 开发要素,探讨了 Web 开发过程中不可避免的问题,以及如何通过测试解决这些问题。第三部分探讨了一些高级话题,如模拟技术、集成第三方认证系统、Ajax、测试固件以及持续集成等。
第 2 版全部使用 Python 3,并针对新版 Django 全面升级,介绍了由外而内的测试驱动开发流程。
书籍目录:
前言 xv
准备工作和应具备的知识 xxi
配套视频 xxviii
致谢 xxix
第一部分 TDD和Django基础
第1章 使用功能测试协助安装Django 2
1.1 遵从测试山羊的教诲,没有测试什么也别做 2
1.2 让Django运行起来 4
1.3 创建Git仓库 6
第2章 使用unittest模块扩展功能测试 10
2.1 使用功能测试驱动开发一个最简可用的应用 10
2.2 Python标准库中的unittest模块 12
2.3 提交 14
第3章 使用单元测试测试简单的首页 16
3.1 第一个Django应用,第一个单元测试 16
3.2 单元测试及其与功能测试的区别 17
3.3 Django中的单元测试 18
3.4 Django中的MVC、URL和视图函数 19
3.5 终于可以编写一些应用代码了 20
3.6 urls.py 22
3.7 为视图编写单元测试 23
第4章 测试(及重构)的目的 28
4.1 编程就像从井里打水 28
4.2 使用Selenium测试用户交互 30
4.3 遵守“不测试常量”规则,使用模板解决这个问题 32
4.3.1 使用模板重构 33
4.3.2 Django测试客户端 35
4.4 关于重构 37
4.5 接着修改首页 38
4.6 总结:TDD流程 39
第5章 保存用户输入:测试数据库 42
5.1 编写表单,发送POST请求 42
5.2 在服务器中处理POST请求 45
5.3 把Python变量传入模板中渲染 46
5.4 事不过三,三则重构 50
5.5 Django ORM和第一个模型 51
5.5.1 第一个数据库迁移 53
5.5.2 测试向前走得挺远 53
5.5.3 添加新字段就要创建新迁移 54
5.6 把POST请求中的数据存入数据库 55
5.7 处理完POST请求后重定向 57
5.8 在模板中渲染待办事项 59
5.9 使用迁移创建生产数据库 61
5.10 回顾 64
第6章 改进功能测试:确保隔离,去掉含糊的休眠 66
6.1 确保功能测试之间相互隔离 66
6.2 升级Selenium和Geckodriver 70
6.3 隐式等待、显式等待和含糊的time.sleep 70
第7章 步步为营 75
7.1 必要时做少量的设计 75
7.1.1 不要预先做大量设计 75
7.1.2 YAGNI 76
7.1.3 REST(式) 76
7.2 使用TDD实现新设计 77
7.3 确保出现回归测试 78
7.4 逐步迭代,实现新设计 80
7.5 自成一体的第一步:新的URL 81
7.5.1 一个新URL 82
7.5.2 一个新视图函数 82
7.6 变绿了吗?该重构了 84
7.7 再迈一小步:一个新模板,用于查看清单 84
7.8 第三小步:用于添加待办事项的URL 86
7.8.1 用来测试新建清单的测试类 87
7.8.2 用于新建清单的URL和视图 88
7.8.3 删除当前多余的代码和测试 89
7.8.4 出现回归!让表单指向刚添加的新URL 89
7.9 下定决心,调整模型 90
7.9.1 外键关系 92
7.9.2 根据新模型定义调整其他代码 93
7.10 每个列表都应该有自己的URL 95
7.10.1 捕获URL中的参数 96
7.10.2 按照新设计调整new_list视图 97
7.11 功能测试又检测到回归 98
7.12 还需要一个视图,把待办事项加入现有清单 99
7.12.1 小心霸道的正则表达式 99
7.12.2 最后一个新URL 100
7.12.3 最后一个新视图 101
7.12.4 直接测试响应上下文对象 102
7.13 使用URL引入做最后一次重构 103
第二部分 Web 开发要素
第8章 美化网站:布局、样式及其测试方法 108
8.1 如何在功能测试中测试布局和样式 108
8.2 使用CSS框架美化网站 111
8.3 Django模板继承 112
8.4 集成Bootstrap 114
8.5 Django中的静态文件 115
8.6 使用Bootstrap中的组件改进网站外观 117
8.6.1 超大文本块 118
8.6.2 大型输入框 118
8.6.3 样式化表格 118
8.7 使用自己编写的CSS 118
8.8 补遗:collectstatic命令和其他静态目录 120
8.9 没谈到的话题 122
第9章 使用过渡网站测试部署 123
9.1 TDD以及部署的危险区域 124
9.2 一如既往,先写测试 125
9.3 注册域名 127
9.4 手动配置托管网站的服务器 127
9.4.1 选择在哪里托管网站 127
9.4.2 搭建服务器 128
9.4.3 用户账户、SSH和权限 128
9.4.4 安装Nginx 128
9.4.5 安装Python 3.6 129
9.4.6 解析过渡环境和线上环境所用的域名 130
9.4.7 使用功能测试确认域名可用而且Nginx正在运行 130
9.5 手动部署代码 130
9.5.1 调整数据库的位置 131
9.5.2 手动创建虚拟环境,使用requirements.txt 133
9.5.3 简单配置Nginx 134
9.5.4 使用迁移创建数据库 136
9.6 手动部署大功告成 137
第10章 为部署到生产环境做好准备 139
10.1 换用Gunicorn 139
10.2 让Nginx伺服静态文件 140
10.3 换用Unix套接字 141
10.4 把DEBUG设为False,设置ALLOWED_HOSTS 142
10.5 使用Systemd确保引导时启动Gunicorn 143
10.6 考虑自动化 144
10.7 保存进度 147
第11章 使用Fabric自动部署 148
11.1 分析一个Fabric部署脚本 149
11.1.1 分析一个Fabric部署脚本 149
11.1.2 使用Git拉取源码 150
11.1.3 更新settings.py 151
11.1.4 更新虚拟环境 151
11.1.5 需要时迁移数据库 152
11.2 试用部署脚本 152
11.2.1 部署到线上服务器 154
11.2.2 使用sed配置Nginx和Gunicorn 155
11.3 使用Git标签标注发布状态 157
11.4 延伸阅读 157
第12章 输入验证和测试的组织方式 159
12.1 针对验证的功能测试:避免提交空待办事项 159
12.1.1 跳过测试 160
12.1.2 把功能测试分拆到多个文件中 161
12.1.3 运行单个测试文件 163
12.2 功能测试新工具:通用显式等待辅助方法 164
12.3 补完功能测试 167
12.4 重构单元测试,分拆成多个文件 168
第13章 数据库层验证 171
13.1 模型层验证 172
13.1.1 self.assertRaises上下文管理器 172
13.1.2 Django怪异的表现:保存时不验证数据 173
13.2 在视图中显示模型验证错误 173
13.3 Django模式:在渲染表单的视图中处理POST请求 177
13.3.1 重构:把new_item实现的功能移到view_list中 178
13.3.2 在view_list视图中执行模型验证 180
13.4 重构:去除硬编码的URL 182
13.4.1 模板标签{% url %} 182
13.4.2 重定向时使用get_absolute_url 183
第14章 简单的表单 186
14.1 把验证逻辑移到表单中 186
14.1.1 使用单元测试探索表单API 187
14.1.2 换用Django中的ModelForm类 188
14.1.3 测试和定制表单验证 189
14.2 在视图中使用这个表单 191
14.2.1 在处理GET请求的视图中使用这个表单 191
14.2.2 大量查找和替换 192
14.3 在处理POST请求的视图中使用这个表单 194
14.3.1 修改new_list视图的单元测试 195
14.3.2 在视图中使用这个表单 196
14.3.3 使用这个表单在模板中显示错误消息 196
14.4 在其他视图中使用这个表单 197
14.4.1 定义辅助方法,简化测试 197
14.4.2 意想不到的好处:HTML5自带的客户端验证 199
14.5 值得鼓励 201
14.6 这难道不是浪费时间吗 201
14.7 使用表单自带的save方法 202
第15章 高级表单 205
15.1 针对重复待办事项的功能测试 205
15.1.1 在模型层禁止重复 206
15.1.2 题外话:查询集合排序和字符串表示形式 208
15.1.3 重写旧模型测试 210
15.1.4 保存时确实会显示完整性错误 211
15.2 在视图层试验待办事项重复验证 212
15.3 处理唯一性验证的复杂表单 213
15.4 在清单视图中使用ExistingListItemForm 215
15.5 小结:目前所学的Django测试知识 217
第16章 试探JavaScript 219
16.1 从功能测试开始 219
16.2 安装一个基本的JavaScript测试运行程序 221
16.3 使用jQuery和固件元素 223
16.4 为想要实现的功能编写JavaScript单元测试 225
16.5 固件、执行顺序和全局状态:JavaScript测试的重大挑战 227
16.5.1 使用console.log打印调试信息 227
16.5.2 使用初始化函数精确控制执行时 229
16.6 经验做法:onload样板代码和命名空间 230
16.7 JavaScript测试在TDD循环中的位置 232
16.8 一些缺憾 232
第17章 部署新代码 234
17.1 部署到过渡服务器 234
17.2 部署到线上服务器 235
17.3 如果看到数据库错误该怎么办 235
17.4 总结:为这次新发布打上Git标签 235
第三部分 高级话题
第18章 用户身份验证、探究及去掉探究代码 238
18.1 无密码验证 238
18.2 探索性编程(又名“探究”) 239
18.2.1 为此次探究新建一个分支 239
18.2.2 前端登录UI 240
18.2.3 从Django中发出邮件 240
18.2.4 使用环境变量,避免源码中出现机密信息 242
18.2.5 在数据库中存储令牌 243
18.2.6 自定义身份验证模型 243
18.2.7 结束自定义Django身份验证功能 224
18.3 去掉探究代码 248
18.4 一个极简的自定义用户模型 251
18.5 令牌模型:把电子邮件地址与唯一的ID关联起来 254
第19章 使用驭件测试外部依赖或减少重复 257
19.1 开始之前布好基本管道 257
19.2 自己动手模拟(打猴子补丁) 258
19.3 Python的模拟库 261
19.3.1 使用unittest.patch 261
19.3.2 让测试向前迈一小步 263
19.3.3 测试Django消息框架 263
19.3.4 在HTML中添加消息 265
19.3.5 构建登录URL 266
19.3.6 确认给用户发送了带有令牌的链接 267
19.4 去除自定义的身份验证后端中的探究代码 269
19.4.1 一个if语句需要一个测试 269
19.4.2 get_user方法 272
19.4.3 在登录视图中使用自定义的验证后端 273
19.5 使用驭件的另一个原因:减少重复 274
19.5.1 使用驭件的返回值 277
19.5.2 在类一级上打补丁 278
19.6 关键时刻:功能测试能通过吗 279
19.7 理论上正常,那么实际呢 281
19.8 完善功能测试,测试退出功能 283
第20章 测试固件和一个显式等待装饰器 285
20.1 事先创建好会话,跳过登录过程 285
20.2 显式等待辅助方法最终版:wait装饰器 290
第21章 服务器端调试技术 293
21.1 实践是检验真理的唯一标准:在过渡服务器中捕获最后的问题 293
21.2 在服务器上通过环境变量设定机密信息 295
21.3 调整功能测试,以便通过POP3测试真实的电子邮件 296
21.4 在过渡服务器中管理测试数据库 299
21.4.1 创建会话的Django管理命令 300
21.4.2 让功能测试在服务器上运行管理命令 301
21.4.3 直接在Python代码中使用Fabric 302
21.4.4 回顾:在本地服务器和过渡服务器中创建会话的方式 303
21.5 集成日志相关的代码 304
21.6 小结 305
第22章 完成“My Lists”页面:由外而内的TDD 306
22.1 对立技术:“由内而外” 306
22.2 为什么选择使用“由外而内” 307
22.3 “My Lists”页面的功能测试 307
22.4 外层:表现层和模板 309
22.5 下移一层到视图函数(控制器) 309
22.6 使用由外而内技术,再让一个测试通过 310
22.6.1 快速重组模板的继承层级 311
22.6.2 使用模板设计API 311
22.6.3 移到下一层:视图向模板中传入什么 313
22.7 视图层的下一个需求:新建清单时应该记录属主 313
22.8 下移到模型层 315
第23章 测试隔离和“倾听测试的心声” 319
23.1 重温抉择时刻:视图层依赖于尚未编写的模型代码 319
23.2 首先尝试使用驭件实现隔离 320
23.3 倾听测试的心声:丑陋的测试表明需要重构 323
23.4 以完全隔离的方式重写视图测试 323
23.4.1 为了新测试的健全性,保留之前的整合测试组件 324
23.4.2 完全隔离的新测试组件 324
23.4.3 站在协作者的角度思考问题 324
23.5 下移到表单层 329
23.6 下移到模型层 332
23.7 关键时刻,以及使用模拟技术的风险 335
23.8 把层与层之间的交互当作“合约” 336
23.8.1 找出隐形合约 337
23.8.2 修正由于疏忽导致的问题 338
23.9 还缺一个测试 339
23.10 清理:保留哪些整合测试 340
23.10.1 删除表单层多余的代码 340
23.10.2 删除以前实现的视图 341
23.10.3 删除视图层多余的代码 342
23.11 总结:什么时候编写隔离测试,什么时候编写整合测试 343
23.11.1 以复杂度为准则 344
23.11.2 两种测试都要写吗 344
23.11.3 继续前行 344
第24章 持续集成 346
24.1 安装Jenkins 346
24.2 配置Jenkins 347
24.2.1 首次解锁 348
24.2.2 现在建议安装的插件 348
24.2.3 配置管理员用户 348
24.2.4 添加插件 350
24.2.5 告诉Jenkins到哪里寻找Python 3和Xvfb 350
24.2.6 设置HTTPS 351
24.3 设置项目 351
24.4 第一次构建 352
24.5 设置虚拟显示器,让功能测试能在无界面的环境中运行 354
24.6 截图 356
24.7 如有疑问,增加超时试试 359
24.8 使用PhantomJS运行QUnit JavaScript测试 359
24.8.1 安装node 359
24.8.2 在Jenkins中添加构建步骤 361
24.9 CI服务器能完成的其他操作 362
第25章 简单的社会化功能、页面模式以及练习 363
25.1 有多个用户以及使用addCleanup的功能测试 363
25.2 页面模式 365
25.3 扩展功能测试测试第二个用户和“My Lists”页面 367
25.4 留给读者的练习 368
第26章 测试运行速度的快慢和炽热的岩浆 371
26.1 正题:单元测试除了运行速度超快之外还有其他优势 372
26.1.1 测试运行得越快,开发速度越快 372
26.1.2 神赐的心流状态 372
26.1.3 经常不想运行速度慢的测试,导致代码变坏 373
26.1.4 现在还行,不过随着时间推移,整合测试会变得越来越慢 373
26.1.5 别只听我一个人说 373
26.1.6 单元测试能驱使我们实现好的设计 373
26.2 纯粹的单元测试有什么问题 373
26.2.1 隔离的测试难读也难写 373
26.2.2 隔离测试不会自动测试集成情况 374
26.2.3 单元测试几乎不能捕获意料之外的问题 374
26.2.4 使用驭件的测试可能和实现方式联系紧密 374
26.2.5 这些问题都可以解决 374
26.3 合题:我们到底想从测试中得到什么 374
26.3.1 正确性 374
26.3.2 简洁可维护的代码 375
26.3.3 高效的工作流程 375
26.3.4 根据所需的优势评估测试 375
26.4 架构方案 375
26.4.1 端口和适配器(或六边形、简洁)架构 376
26.4.2 函数式核心,命令式外壳 377
26.5 小结 377
遵从测试山羊的教诲 379
附录A PythonAnywhere 381
附录B 基于类的Django 视图 385
附录C 使用Ansible 配置服务器 394
附录D 测试数据库迁移 398
附录E 行为驱动开发 403
附录F 构建一个REST API:JSON、Ajax 和JavaScript 模拟技术 416
附录G Django-Rest-Framework 433
附录H 速查表 443
附录I 接下来做什么 447
附录J 示例源码 451
参考书目 453
作者简介 454
封面介绍 454
作者介绍:
哈利·J.W. 帕西瓦尔(Harry J.W. Percival)
TDD积极践行者,曾参与开发电子制作表软件先驱Resolver One;目前就职于PythonAnywhere公司,经常受邀参加TDD和Python开发主题演讲、研讨会和开发者大会;取得了利物浦大学计算机科学硕士学位和剑桥大学哲学硕士学位。
出版社信息:
暂无出版社相关信息,正在全力查找中!
书籍摘录:
暂无相关书籍摘录,正在全力查找中!
在线阅读/听书/购买/PDF下载地址:
原文赏析:
Do you know why the Django mascot is a pony? The story is that Django comes with so many things you want: an ORM, all sorts of middleware, the admin site … "What else do you want, a pony?" Well, Gunicorn stands for "Green Unicorn", which I guess is what you’d want next if you already had a pony…
On the Pros and Cons of Different Types of Test, and Decoupling ORM code
Functional tests
Provide the best guarantee that your application really works correctly, from the point of view of the user.
But: it’s a slower feedback cycle,
And they don’t necessarily help you write clean code.
Integrated tests (reliant on, eg, the ORM or the Django Test Client)
Are quick to write,
Easy to understand,
Will warn you of any integration issues,
But may not always drive good design (that’s up to you!).
And are usually slower than isolated tests
Isolated ("mocky") tests
These involve the most hard work.
They can be harder to read and understand,
But: these are the best ones for guiding you towards better design.
And they run the fastest.
Decoupling our application from ORM code
When striving to write ...
So one way of getting what we want is to try and minimise the amount of our code that has to deal with boundaries. Then we test our core business logic with isolated tests and test our integration points with integrated tests.
Functional tests should help you build an application with the right functionality, and guarantee you never accidentally break it. Unit tests should help you to write code that’s clean and bug free.
We can start to settle into the TDD unit-test/code cycle now:
1. In the terminal, run the unit tests and see how they fail.
2. In the editor, make a minimal code change to address the current test failure.
And repeat!
Kent Beck (who basically invented TDD) uses the metaphor of lifting a bucket of water out of a well with a rope: when the well isn’t too deep, and the bucket isn’t very full, it’s easy. And even lifting a full bucket is pretty easy at first. But after a while, you’re going to get tired. TDD is like having a ratchet that lets you save your progress, take a break, and make sure you never slip backwards. That way you don’t have to be smart all the time.
...
TDD is a discipline, and that means it’s not something that comes naturally; because many of the payoffs aren’t immediate but only come in the longer term, you have to force yourself to do it in the moment. That’s what the image of the Testing Goat is supposed to illustrate—you need to be a bit bloody-minded about it.
其它内容:
书籍介绍
本书从最基础的知识开始,讲解 Web 开发的整个流程,展示如何使用 Python 做测试驱动开发。本书由三个部分组成。第一部分介绍了测试驱动开发和 Django 的基础知识,并在每个阶段进行严格的单元测试。第二部分讨论了 Web 开发要素,探讨了 Web 开发过程中不可避免的问题,以及如何通过测试解决这些问题。第三部分探讨了一些高级话题,如模拟技术、集成第三方认证系统、Ajax、测试固件以及持续集成等。
第 2 版全部使用 Python 3,并针对新版 Django 全面升级,介绍了由外而内的测试驱动开发流程。
网站评分
书籍多样性:5分
书籍信息完全性:3分
网站更新速度:8分
使用便利性:5分
书籍清晰度:5分
书籍格式兼容性:6分
是否包含广告:3分
加载速度:5分
安全性:6分
稳定性:6分
搜索功能:6分
下载便捷性:3分
下载点评
- 愉快的找书体验(461+)
- 体验差(451+)
- 在线转格式(310+)
- 博大精深(588+)
- 购买多(146+)
- 中评(361+)
- 值得购买(295+)
- 小说多(667+)
- 图书多(147+)
- 一星好评(167+)
- 值得下载(572+)
- 少量广告(303+)
- epub(182+)
下载评价
- 网友 方***旋: ( 2025-01-06 05:30:13 )
真的很好,里面很多小说都能搜到,但就是收费的太多了
- 网友 晏***媛: ( 2025-01-09 10:51:21 )
够人性化!
- 网友 宓***莉: ( 2024-12-31 02:11:29 )
不仅速度快,而且内容无盗版痕迹。
- 网友 相***儿: ( 2024-12-26 05:23:42 )
你要的这里都能找到哦!!!
- 网友 龚***湄: ( 2024-12-26 18:47:19 )
差评,居然要收费!!!
- 网友 权***颜: ( 2025-01-07 16:12:06 )
下载地址、格式选择、下载方式都还挺多的
- 网友 扈***洁: ( 2025-01-13 11:25:23 )
还不错啊,挺好
- 网友 焦***山: ( 2025-01-04 18:47:55 )
不错。。。。。
- 网友 寇***音: ( 2025-01-13 02:27:09 )
好,真的挺使用的!
- 网友 菱***兰: ( 2025-01-07 13:53:03 )
特好。有好多书
- 网友 常***翠: ( 2025-01-05 19:33:29 )
哈哈哈哈哈哈
- 网友 冯***卉: ( 2024-12-21 21:15:02 )
听说内置一千多万的书籍,不知道真假的
- 网友 车***波: ( 2025-01-09 00:21:11 )
很好,下载出来的内容没有乱码。
- 网友 苍***如: ( 2024-12-31 07:47:36 )
什么格式都有的呀。
喜欢"Python测试驱动开发"的人也看了
2020新版中考英语听力训练 初中初三英语听力总复习人教版含音频英语课本书同步听力突破专项训练习9年级英语听力强化训练模拟试题 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
计算固体力学方法 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
于康说营养 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
西夏死书2遗失的1964 顾非鱼 万卷出版公司【正版书】 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
超有趣的欧洲折纸游戏书(全4册) 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 高勝算決策 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- Visual FoxPro程序设计与应用实践教程 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 胎儿MRI产前诊断 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 工程建设监理概论(第3版) 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 全8册心理抚养正版读懂孩子的心父母的语言教育孩子要懂的心理学妈妈的情绪决定孩子的未来非暴力沟通捕捉儿童敏感期心理学心里 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 秦文君童年宝藏书系:少女贾梅 秦文君 湖南少年儿童出版社 9787556249565 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- Win赢在起点 幼小衔接练习 数字描红拼音描红汉字描红笔画笔顺偏旁描红 语文练习+数学练习+拼音练习 共7本 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 蒙台梭利家庭教育全书(畅销书珍藏版)风靡全球蒙氏早教经典原著,当代幼儿教育的里程碑,打造天才儿童的家教圣经,探寻孩子内心积极强大正能量,父母和教师的教育方案 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 建筑工程管理与实务案例分析专项突破 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 市政监理员资料编制与工作用表填写范例 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
书籍真实打分
故事情节:3分
人物塑造:3分
主题深度:9分
文字风格:4分
语言运用:7分
文笔流畅:5分
思想传递:7分
知识深度:6分
知识广度:4分
实用性:9分
章节划分:9分
结构布局:5分
新颖与独特:9分
情感共鸣:7分
引人入胜:7分
现实相关:7分
沉浸感:7分
事实准确性:3分
文化贡献:5分