![Show Menu](styles/mobile-menu.png)
![Page Background](./../common/page-substrates/page0475.png)
model-layer validation,
175 – 187changes to test,
216enforcing,
186errors in View,
178 – 182integrity errors,
217POST requests,
183 – 187preventing duplicates,
212refactoring,
175,
184 – 186unit testing,
177 – 178at views level,
218Model-View-Controller (MVC),
24 , 435ModelForm,
195Mozilla Persona,
242MVC frameworks,
24 , 435N
namespacing,
258Nginx,
138,
144 – 146 , 149,
165,
424nonroot user creation,
137notifications,
433O
ORM (Object-Relational Mapper),
60 – 64Outside-In TDD,
323 – 335advantages,
323controller layer,
326defined,
335vs. Inside-Out,
323model layer,
331 – 333pitfalls,
335presentation layer,
325template hierarchy,
327 – 329views layer,
326 – 331,
333P
PaaS (Platform-as-a-Service),
136Page pattern,
390 – 393,
396patch decorator,
278,
301patching,
287payment systems, testing for,
252performance testing,
435Persona,
242,
252,
308 – 310,
435PhantomJS,
381 – 384,
434Platform-as-a-Service (PaaS),
136POST requests,
203processing,
54,
183 – 187redirect after,
68saving to database,
65 – 67sending,
51 – 54,
92Postgres,
433private key authentication,
137programming by wishful thinking,
328,
335(see also Outside-In TDD)
property Decorator,
334provisioning,
136 – 140with Ansible,
423 – 426automation in,
166functional tests (FT) in,
139overview,
152vs. deployment,
140pure unit tests (see isolated tests)
py.test,
436Python
adding to Jenkins,
369PythonAnywhere,
136 , 409Q
QuerySet,
61,
214 – 216QUnit,
227,
235,
263,
268R
race conditions,
374,
389Red, Green, Refactor,
58,
89 , 170redirects,
68 , 188refactoring,
40 – 45at application level,
183 – 186Red, Green, Refactor,
58,
89 , 170removing hard-coded URLs,
187and test isolation,
341,
362tips,
190unit tests,
175Refactoring Cat,
44 , 112relative import,
161,
173render to string,
56REST (Representational Site Transfer),
82S
screenshots,
411scripts, automated,
132secret key,
160Security Engineering (Anderson),
53security tests,
435sed (stream editor),
165Index
|
447