Python测试驱动开发(影印版)

企业采购书卡请拔打028-83157469,团购书目请拨打19113427458(法定工作日9:00-17:00)

定  价 :
¥ 89.00
文 轩 价 :
¥71.20 (8折)
库  存 :
库存紧张
作  者 :
(美)珀西瓦尔(Harry J.W.Percival) 著 著
所属分类 :
图书 > 行业职业 > 计算机 > 英文原版书
促销活动 :
❤图书音像单笔满199减30!(特价图书、电子书除外)
❤老客户回馈,积分换礼券,购书更实惠
❤图书订单非新疆西藏地区包邮,新疆西藏运费每单20元
详情 >>
购买数量 :
- +
立即购买
服  务 :
由"文轩网"直接销售和发货,并提供售后服务
正品低价| 闪电发货|货到付款| 高效退换货
  • 作 者: (美)珀西瓦尔(Harry J.W.Percival) 著 著
  • 出版社: 东南大学出版社
  • 出版时间:2015-09-01
  • 开 本:16开
  • 页 数:461
  • 印刷时间:2015-09-01
  • 字 数:612000.0
  • 装 帧:平装
  • 语  种:语种
  • 版 次:1
  • 印 次:1
  • I S B N:9787564159153

目录

Prerequisites and Assumptions
Companion Video
Acknowledgments
Part I.The Basics of TDD and Django
1.Getting Django Set Up Using a Functional Test
Obey the Testing Goat! Do Nothing Until You Have a Test
Getting Django Up and Running
Starting a Git Repository
2.Extending Our Functional Test Using the unittest Module
Using a Functional Test to Scope Out a Minimum Viable App
The Python Standard Library's unittest Module
Implicit waits
Commit
3.Testing a Simple Home Page with Unit Tests
Our First Django App, and Our First Unit Test
Unit Tests, and How They Differ from Functional Tests
Unit Testing in Django
Django's MVC, URLs, and View Functions
At Last! We Actually Write Some Application Code!
urls.py
Unit Testing a View
The Unit—Test/Code Cycle
4.What Are We Doing with All These Tests?
Programming Is like Pulling a Bucket of Water up from a Well
Using Selenium to Test User Interactions
The "Don't Test Constants" Rule, and Templates to the Rescue
Refactoring to Use a Template
On Refactoring
A Little More of Our Front Page
Recap: The TDD Process
5.Saving User Input
Wiring Up Our Form to Send a POST Request
Processing a POST Request on the Server
Passing Python Variables to Be Rendered in the Template
Three Strikes and Refactor
The Django ORM and Our First Model
Our First Database Migration
The Test Gets Surprisingly Far
A New Field Means a New Migration
Saving the POST to the Database
Redirect After a POST
Better Unit Testing Practice: Each Test Should Test One Thing
Rendering Items in the Template
Creating Our Production Database with migrate
6.Getting to the Minimum Viable Site
Ensuring Test Isolation in Functional Tests
Running lust the Unit Tests
Small Design When Necessary
YAGNI!
REST
Implementing the New Design Using TDD
Iterating Towards the New Design
Testing Views, Templates, and URLs Together with the Django Test Client
A New Test Class
A New URL
A New View Function
A Separate Template for Viewing Lists
Another URL and View for Adding List Items
A Test Class for New List Creation
A URL and View for New List Creation
Removing Now—Redundant Code and Tests
Pointing Our Forms at the New URL
Adjusting Our Models
A Foreign Key Relationship
Adjusting the Rest of the World to Our New Models
Each List Should Have Its Own URL
Capturing Parameters from URLs
Adjusting new_list to the New World
One More View to Handle Adding Items to an Existing List
Beware of Greedy Regular Expressions!
The Last New URL
The Last New View
But How to Use That URL in the Form?
A Final Refactor Using URL includes
Part Ⅱ.Web Development Sine Qua Nons
7.Prettification: Layout and Styling, and What to Test About It
What to Functionally Test About Layout and Style
Pretti Fication: Using a CSS Framework
Django Template Inheritance
Integrating Bootstrap
Rows and Columns
Static Files in Django
Switching to Static Live Server Test Case
Using Bootstrap Components to Improve the Look of the Site
Jumbotron!
Large Inputs
Table Styling
Using Our Own CSS
What We Glossed Over: collectstatic and Other Static Directories
A Few Things That Didn't Make It
8.Testing Deployment Using a Staging Site
TDD and the Danger Areas of Deployment
As Always, Start with a Test
Getting a Domain Name
Manually Provisioning a Server to Host Our Site
Choosing Where to Host Our Site
Spinning Up a Server
User Accounts, SSH, and Privileges
Installing Nginx
Configuring Domains for Staging and Live
Using the FT to Confirm the Domain Works and Nginx Is Running
Deploying Our Code Manually
Adjusting the Database Location
Creating a Virtualenv
Simple Nginx Configuration
Creating the Database with migrate
Getting to a Production—Ready Deployment
Switching to Gunicorn
Getting Nginx to Serve Static Files
Switching to Using Unix Sockets
Switching DEBUG to False and Setting ALLOWED_HOSTS
Using Upstart to Make Sure Gunicorn Starts on Boot
Saving Our Changes: Adding Gunicorn to Our requirements.txt
Automating
"Saving Your Progress"
9.Automating Deployment with Fabric
Breakdown of a Fabric Script for Our Deployment
Trying It Out
Deploying to Live
Nginx and Gunicorn Config Using sed
Git Tag the Release
Further Reading
10.Input Validation and Test Organisation
Validation FT: Preventing Blank Items
Skipping a Test
Splitting Functional Tests out into Many Files
Running a Single Test File
Fleshing Out the FT
Using Model—Layer Validation
Refactoring Unit Tests into Several Files
Unit Testing Model Validation and the self assert Raises Context Manager
A Django Quirk: Model Save Doesn't Run Validation
Surfacing Model Validation Errors in the View
Checking Invalid Input Isn't Saved to the Database
Django Pattern: Processing POST Requests in the Same View as Renders the Form
Refactor: Transferring the new_item Functionality into view_list
Enforang Model Validation in view_list
Refactor: Removing Hardcoded URLs
The {% url %} Template Tag
Using get_absolute_url for Redirects
11.A Simple Form
Moving Validation Logic into a Form
Exploring the Forms API with a Unit Test
Switching to a Django Model Form
Testing and Customising Form Validation
Using the Form in Our Views
Using the Form in a View with a GET Request
A Big Find and Replace
Using the Form in a View That Takes POST Requests
Adapting the Unit Tests for the new_list View
Using the Form in the.View
Using the Form to Display Errors in the Template
Using the Form in the Other View
A Helper Method for Several Short Tests
Using the Form's Own Save Method
12.More Advanced Forms
Another FT for Duplicate Items
Preventing Duplicates at the Model Layer
A Little Digression on Queryset Ordering and String Representations
Rewriting the Old Model Test
Some Integrity Errors Do Show Up on Save
Experimenting with Duplicate Item Validation at the Views Layer
A More Complex Form to Handle Uniqueness Validation
Using the Existing List Item Form in the List View
13.Dipping Our Toes, Very Tentatively, into Java Script
Starting with an FT
Setting Up a Basic Java Script Test Runner
Usingi Query and the Fixtures Div
Building a Java Script Unit Test for Our Desired Functionality
Javascript Testing in the TDD Cycle
Columbo Says: Onload Boilerplate and Namespacing
A Few Things That Didn't Make It
14.Deploying Our New Code
Staging Deploy
Live Deploy
What to Do If You See a Database Error
Wrap—Up: git tag the New Release
……
Part Ⅲ.More Advanced Topics
Index

作者简介

Harry J.W.Percival,在PyhonAnywhere LLP工作,并带着全部激情和热忱在全球的演讲、培训和会议中传播测试驱动开发的福音。他持有利物浦大学的计算机科学硕士学位以及剑桥大学的哲学硕士学位。

内容简介

本书通过从头开发一个真实的Web应用,介绍了Python测试驱动开发的优势。读者将学会如何在构建应用的每个部分之前编写和运行测试,然后用最少的代码通过这些测试。

价格说明

定价:为出版社全国统一定价;

文轩价:为商品的销售价,是您最终决定是否购买商品的依据;受系统缓存影响,最终价格以商品放入购物车后显示的价格为准;

关于新广告法声明

新广告法规定所有页面信息中不得出现绝对化用词和功能性用词。

本店非常支持新广告法,但为了不影响消费者正常购买,页面明显区域本店已在排查修改,对于不明显区域也将会逐步排查并修改,我们此郑重声明:本店所有页面上的绝对化用词与功能性用词在此声明全部失效,不作为赔付理由。涉及“教育部声明”中的商品,均不代表教育部指定、推荐的具体版本,仅代表该商品的内容为指定、推荐书目。因极限用词引起的任何形式的商品赔付,本店不接收且不妥协。希望消费者理解并欢迎联系客服帮助完善,也请职业打假人士高抬贵手。