« Back to home

60 seconds to TDD in Python

This quick tutorial presents a minimal setup with Python to start coding using TDD. It only requires two lightweight dependencies nose and when-changed available through pip .

Install and run

sudo pip install nose 
sudo pip install when-changed

The following snippet creates a Makefile and watches for changes in the test folder

mkdir test
touch Makefile
echo -e "tests: \tnosetests dev_test: \twhen-changed -r test 'clear && make tests'; " >> Makefile
#start watching for changes in test/
make dev_test

And write your tests

Next, start writing your tests and put them in the test folder, a first minimal test would look like:

# test/test_minimal.py
from nose.tools import *

def test_read_file():
    assert False

This test will obviously fail but it is a good starting point.

nosetests
.
--------------------------------------------------------------
Ran 1 tests in 0.003s

FAILED (failures=1)

Afterwards, you can start writing your classes, methods, etc. and testing them:

# file_reader.py
def read_file():
    # insert read logic here 
    return number_of_words;

# test/test_minimal.py
from nose.tools import *
from file_reader import *

def test_read_file():
    assert read_file() > 0

A nutshell definition of TDD (by M. Fowler) reads:

To recap, simply follow these three simple steps iteratively:

  • Write a test for the next bit of functionality you want to add.
  • Write the functional code until the test passes.
  • Refactor both new and old code to make it well structured πŸ”‘

As Fowler points out, the key to proper TDD lies on the refactoring step.


Comments

comments powered by Disqus