By taking you through the development of a real web application from beginning to end, the second edition of this hands-on guide demonstrates the practical advantages of test-driven development (TDD) with Python. You’ll learn how to write and run tests before building each part of your app, and then develop the minimum amount of code required to pass those tests. The result? Clean code that works.
In the process, you’ll learn the basics of Django, Selenium, Git, jQuery, and Mock, along with current web development techniques. If you’re ready to take your Python skills to the next level, this book―updated for Python 3.6―clearly demonstrates how TDD encourages simple designs and inspires confidence.
- Dive into the TDD workflow, including the unit test/code cycle and refactoring
- Use unit tests for classes and functions, and functional tests for user interactions within the browser
- Learn when and how to use mock objects, and the pros and cons of isolated vs. integrated tests
- Test and automate your deployments with a staging server
- Apply tests to the third-party plugins you integrate into your site
- Run tests automatically by using a Continuous Integration environment
- Use TDD to build a REST API with a front-end Ajax interface
- Title
- Test–Driven Development with Python, 2nd Edition
- Subtitle
- Obey the Testing Goat: Using Django, Selenium, and JavaScript
- Publisher
- O'Reilly Media
- Author(s)
- Harry J.w Percival
- Published
- 2017-08-18
- Edition
- 2
- Format
- eBook (pdf, epub, mobi)
- Pages
- 604
- Language
- English
- ISBN-10
- 1491958707
- ISBN-13
- 9781491958704
- License
- Read online for free
- Book Homepage
- Free eBook, Errata, Code, Solutions, etc.
Introduction: Praise for Test-Driven Development with Python Preface Prerequisites and Assumptions Companion Video Acknowledgments Part 1: The Basics of TDD and Django Chapter 1: Getting Django Set Up Using a Functional Test Chapter 2: Extending Our Functional Test Using the unittest Module Chapter 3: Testing a Simple Home Page with Unit Tests Chapter 4: What Are We Doing with All These Tests? (And, Refactoring) Chapter 5: Saving User Input: Testing the Database Chapter 6: Improving Functional Tests: Ensuring Isolation and Removing Voodoo Sleeps Chapter 7: Working Incrementally Part 2: Web Development Sine Qua Nons Chapter 8: Prettification: Layout and Styling, and What to Test About It Chapter 9: Deployment Part 1: Containerization aka Docker Chapter 10: Making our App Production-Ready Chapter 11: Infrastructure As Code: Automated Deployments With Ansbile Chapter 12: Splitting Our Tests into Multiple Files, and a Generic Wait Helper Chapter 13: Validation at the Database Layer Chapter 14: A Simple Form Chapter 15: More Advanced Forms Chapter 16: Dipping Our Toes, Very Tentatively, into JavaScript Chapter 17: Deploying Our New Code Part 3: More Advanced Topics in Testing Chapter 18: User Authentication, Spiking, and De-Spiking Chapter 19: Using Mocks to Test External Dependencies or Reduce Duplication Chapter 20: Test Fixtures and a Decorator for Explicit Waits Chapter 21: Server-Side Debugging Chapter 22: Finishing "My Lists": Outside-In TDD Chapter 23: Test Isolation, and "Listening to Your Tests" Chapter 24: Continuous Integration (CI) Chapter 25: The Token Social Bit, the Page Pattern, and an Exercise for the Reader Chapter 26: Fast Tests, Slow Tests, and Hot Lava Epilogue: Obey the Testing Goat! Appendices Appendix A: PythonAnywhere Appendix B: Django Class-Based Views Appendix C: Testing Database Migrations Appendix D: Behaviour-Driven Development (BDD) Appendix E: Building a REST API: JSON, Ajax, and Mocking with JavaScript Appendix F: Django-Rest-Framework Appendix G: Cheat Sheet Appendix H: What to Do Next Appendix I: Source Code Examples Bibliography