kindle电子书

资源下载,尽在我的书库!
首页 > kindle电子书库 > 工业|计算机|互联网 > 电子、计算机、网络

Python Web开发 测试驱动方法 (图灵程序设计丛书)

  • 作者: 珀西瓦尔
  • 体积:3.03 MB
  • 语言:中文
  • 日期:2018-12-15
  • 推荐:

简介:Python Web开发 测试驱动方法 (图灵程序设计丛书)

电子书详细介绍

 本书从基础的知识开始,讲解Web开发的整个流程,展示如何使用Python做测试驱动开发。本书由三个部分组成。介绍了测试驱动开发和Django的基础知识。第二部分讨论了Web开发要素,探讨了Web开发过程中不可避免的问题,及如何通过测试解决这些问题。第三部分探讨了一些高级话题,如模拟技术、集成第三方插件、Ajax、测试固件、持续集成等。本书适合Web开发人员阅读。

编辑推荐

 

本书手把手教你从头开始开发一个真正的Web应用,并且展示使用Python做测试驱动开发(TDD)的优势。你将学到如何在开发应用的每一个部分之前先编写和运行测试,然后再编写少量的代码让测试通过。也就是说,你将学会应用TDD理念,写出简洁可用、赏心悦目的代码。 

在这个过程中,你还将学到Django、Selenium、Git、jQuery和Mock的基础知识,以及其他当前流行的Web开发技术。如果你准备提升自己的Python技能,本书将清楚地演示如何使用TDD实现简单的设计。 

通过阅读本书,你将: 

深入分析TDD流程,包括“单元测试/编写代码”循环和重构; 
使用单元测试检查类和函数,使用功能测试检查浏览器中的用户交互; 
学习何时以及如何使用模拟对象,以及隔离测试和整合测试的优缺点; 
在过渡服务器中测试和自动部署; 
测试网站中集成的第三方插件; 
使用持续集成环境自动运行测试。

作者简介

Harry J.W. Percival目前就职于PythonAnywhere 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

我来说两句

本书评论

共有 0 条评论
图书分类
我的书库手机端
帮助中心
会员登录 ×
新用户注册 ×