Support unavailable
Please try again later

Fully Test-Driven Django with Selenium

by Harry Percival for EuroPython 2012

tl; dr:

  • The concept: run through the official Django tutorial, but with full TDD
  • Includes browser-based testing with Selenium, using the new WebDriver API
  • In-depth unit-testing, including the Django Test Client and tools like Mock
  • Discussions of TDD philosophy: what to test, what not to test, how to test
  • come prepared! you’ll need git, firefox, python2.7, django1.4 and selenium installed.

Fully Test-Driven Django with Selenium

AKA “The Django Pony vs The Testing Goat”

This tutorial is aimed primarily at people who want to learn about one or many of:

  • Django
  • Selenium
  • Test-Driven-Development

So it’s aimed at beginners of one kind or another – if you are already well versed in all three, then you may not get much out of it.

The idea is to run through the steps covered by the official Django tutorial, covering the essentials of Django from a beginner’s point of view. However, at each stage, instead of “just” writing the Django code required to build our site, we first write tests.

And we don’t just write unit tests! We start by writing “functional” or “acceptance” tests, using Selenium - which means driving a real browser, and checking the actual behaviour of the site as it is rendered, from the user’s point of view.

Why should you listen to me, I hear you ask?

Well, I was lucky enough to get my first “proper” software development job about two years ago with a bunch of Extreme Programming fanatics, who’ve thoroughly inculcated me into their cult of Test-Driven development. Believe me when I say I’m contrary enough to have questioned every single practice, challenged every single decision, moaned about every extra minute spent doing “pointless” tests instead of writing “proper” code. But I’ve come round to the idea now, and whenever I’ve had to go back to some of my old projects which don’t have tests, boy have I ever realised the wisdom of the approach. So, I’ve learnt from some really good people, and the learning process is still fresh in my mind, and most importantly, I still have the passion of a recent convert!


Come with the following pre-installed on your laptop please:

  • Git
  • Firefox
  • Python 2.7
  • setuptools/easy_install/pip then:
  • pip install django
  • pip install selenium
  • pip install mock

PS - I don’t have a preview of my TDD talk, but there is one video of me giving a lightning talk at last year’s Pycon UK. It’s on a totally different topic, but it gives a hit of my “dynamic” presentation “skills": -



  1. Gravatar
    apologies everyone - I got the implicitly_wait API totally wrong, it's a method call not a property. more info here

New comment

240 minutes (inc Q&A)

Tagged as

django web testing selenium tdd
Our Sponsors
Python Experts
SSL Matrix
Wanna sponsor?