The Testing Goat

Obey the Testing Goat!

TDD for the Web, with Python, Selenium, Django, JavaScript and pals...

Reviews and Testimonials

Here's a few nice things people have said to me about the book, either directly or via online reviews:

Dylan Fox, February 2015: "Being able to form an opinion on integrated vs isolated tests is important"

As for feedback, overall I really enjoyed the book. The last chapters were tough, but important to cover. And I see that clearly now after having read them! Being able to form an opinion on integrated vs isolated tests is important, and without having read the final chapters I wouldn't have been able to begin to form an opinion. I feel like I know enough now to break the best practices rules when I need to. If that makes sense.

Merouane Atig, November 2014: "I think that your book is the most interesting approach to TDD I've ever read"

I'm currently reading your excellent book "Test-Driven Web Development with Python" and I really love it! I'm new to Python and Django but I already read many books on TDD in other languages (C# and Ruby mainly) and I practice TDD for 3 years. I think that your book has the most interesting approach to TDD I've ever read. Thank you for this!

Iain Houston, November 2014: "combines a large a number of really important ideas and, at the same time, pays justice to them with just the right amount of detail."

Hi Harry,

I really appreciate your attention to detail. Just the right balance, so as not to lose the view from above whilst being very clear about (to me) very important disclosures about your thought process. At random: “But we won’t do them [refactoring] right away, because right now our application is in a broken state.” Again: Your thinking out loud about why you’d tend to Model Layer validation rather towards a plethora of form validation. Good to think about; good to hear your reasoning.

I think you’ve been very clever to combine so large a number of really important ideas and, at the same time, pay justice to them with just the right amount of detail.

It’s so important, this detail. The hundreds of little micro-decisions a programmer decides during each hour of programming: what to call this variable? should I commit now? should I refactor yet? Is it worth writing a test for this? I should break this file / function into smaller pieces as I’m losing control of the idea...

So, to be able to read along with your thought processes as we explore new ways of doing things: making micro-decisions about new things we’re just getting to grips with and that still feel a little unfamiliar under our fingers... I very much and appreciate your book. It’s certainly been an eye-opener for me.

Thanks Iain :)

Edward Cheadle, September 2014: "well written, easy to understand and pulls together all the concepts of modern software development"

I saw the book at Barnes and Noble, looked through it and bought it. I did see I could read the book for free and then make a decision whether or not to buy it, but I looked it over and realized I wanted it in print so I could make notes, mark pages and keep it as a reference. I am now on page 22 and I am very glad I just bought it.

I am a systems administrator, learning Python, and looking at how software is developed so I can create and manage a infrastructure for continuous integration of modern applications. I figure if I really understand what programmers need to do, I can help build a solid infrastructure, but also the book is a lot of fun

I know I am not your target audience, but the book is well written, easy to understand and pulls together all the concepts of modern software development in a way I can understand. It is helping me learn python because I enjoy a project to work on rather than endless discussions of how loops work and what a variable is. The basic concepts of a language are important, so I have other books I use as reference. Your book pulls me in and gives me the desire to learn about if statements, classes etc... and makes reading the other books less dry.

Casey Brant, August 2014: "something here for Django newbies and old hats alike."

I've read a lot about Python, a lot about Django, and a lot about TDD, but I've never seen anyone put it all together as elegantly as Mr. Percival does in this book. There's something here for Django newbies and old hats alike. (...)

Eric Seidler, Feb 2014: "incorporates all of the myriad technologies that are needed to do real web development"

The book has really been great so far. I found it a little challenging to learn Django and TDD at the same time. But, on the other hand, I haven't seen any other book that incorporates all of the myriad technologies that are needed to do real web development. I appreciate that you throw everything in the mix, just like what's needed for a real app, instead of keeping all the technologies boxed off in separate chapters.

Steve Young, Jan 2014: "the best resource for TDD/python/web I have read"

this has been the best resource for TDD/python/web I have read. And it happens that I am specifically interested in Django development, so it was perfect for me. The book is easy to read, the code in the book has very few (if any) mistakes, and it covers a wealth of material. Great job!!

Ifiok Jr., December 2013: "hands down the best teaching book I've ever read"

Hi Harry,

I just wanted to let you know that I'm going through your book and it's hands down the best teaching book I've ever read. Your conversational style and pace of introducing new ideas make for an incredible learning experience. I feel like I've learned more about programming and web development in the last few days than any month since I started learning.

I'm still a beginner, especially with the Django framework, but I'm finding that TDD is such a great way to learn the internals of any framework. The style forces me to think ahead by writing tests to pre-emptively catch issues which could surface, and as such it becomes detrimental to blindly copy and paste "working" code from external sources.

I can't thank you enough, and have purchased an electronic copy of the book as a thumbs up!

Ifiok Jr.

Cian, December 2013: "Brilliant book. The examples are easy to follow, and.."

Brilliant book. The examples are easy to follow, and in following them, you quickly reach the point where you can put together your own Django application. The book also gets the pacing right, so that you learn things and feel that they're immediately useful. Previous books in this space have always left me feeling I knew a large amount of trivia, but without a proper framework to apply it.

Victor, August 2013: "kick-started my use of Django and explained the strength of TDD"

With a solid understanding of how to operate Python (I would recommend Allen B. Downey's Think Python) and some minimal knowledge of HTML, Test-Driven Development with Python has kick-started my use of Django and explained the strength of TDD as a development process.

This isn't a book exclusively about Django, and as concepts are introduced Harry Percival references the appropriate Django documentation which I will review later to reinforce what I've learned from the book.

What H. Percival excels at is illuminating just how well-tuned Django is for the TDD process. Django's built-in feature to write and run unit and functional tests would likely feel like an afterthought, or a mere option if you were learning Django exclusively from their documentation. Instead, this feature is highlighted as we lay the foundation for making TDD our development process developing and maintaining rock-solid projects.

alexakarpov, May 2013: "even the first 4 chapters were worth the money spent"

Why, even the first 4 chapters were worth the money spent; can't wait for more. A very good 'hands-on' book - something that's not so easy to come by. Made me love both Python and Django already - I'm a newbie with both.

Nathan Stocks, author of Green, August 2014

1) Your book is awesome!

2) Your book is way too long.

3) Your book covers way too many subjects.

4) It's probably the most relevant book I've ever read with regards to practical application in the daily life of a Python programmer, partially because of #2 and #3.

5) It would be even an even better book if you could address #2 and #3 whilst simultaneously not sacrificing #1 and #4. No, I have no clue about how to actually do that. I'll leave that as an exercise to the author. ;-)

Thanks guys! There are lots more on the O'Reilly reviews page for the book and on Amazon...


comments powered by Disqus
Read the book

The book is available both for free and for money. It's all about TDD and Web programming. Read it here!

Reviews & Testimonials

"Hands down the best teaching book I've ever read""Even the first 4 chapters were worth the money""Oh my gosh! This book is outstanding""The testing goat is my new friend"Read more...


A selection of links and videos about TDD, not necessarily all mine, eg this tutorial at PyCon 2013, how to motivate coworkers to write unit tests, thoughts on Django's test tools, London-style TDD and more.

Old TDD / Django Tutorial

This is my old TDD tutorial, which follows along with the official Django tutorial, but with full TDD. It badly needs updating. Read the book instead!

Save the Testing Goat Campaign

The campaign page, preserved for history, which led to the glorious presence of the Testing Goat on the front of the book.