This is how I run the tests.
diff --git a/runtests.sh b/runtests.sh
new file mode 100755
index 0000000..5a03b0a
--- /dev/null
+++ b/runtests.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+# A script that runs each unit test independently, with output
+# directed to a file in OUT/$T.out.  If command line arguments are
+# given, they are tests to run; otherwise every file named
+# Lib/test/test_* is run (via regrtest).  A summary of failing,
+# passing and skipped tests is written to stdout and to the files
+# GOOD, BAD and SKIPPED.
+
+# Reset PYTHONPATH to avoid alien influences on the tests.
+unset PYTHONPATH
+
+# Choose the Python binary.
+case `uname` in
+Darwin) PYTHON=./python.exe;;
+*)      PYTHON=./python;;
+esac
+
+# Create the output directory if necessary.
+mkdir -p OUT
+
+# Empty the summary files.
+>GOOD
+>BAD
+>SKIPPED
+
+# Compute the list of tests to run.
+case $# in
+0) 
+    TESTS=`(cd Lib/test; ls test_*.py | sed 's/\.py//' | grep -v  test_socket)`
+    ;;
+*)
+    TESTS="$@"
+    ;;
+esac
+
+# Run the tests.
+for T in $TESTS
+do
+    echo -n $T
+    if $PYTHON Lib/test/regrtest.py -uall $T >OUT/$T.out 2>&1
+    then
+	if grep -q "1 test skipped:" OUT/$T.out
+	then
+	    echo " SKIPPED"
+            echo $T >>SKIPPED
+	else
+	    echo
+            echo $T >>GOOD
+	fi
+    else
+	echo " BAD"
+        echo $T >>BAD
+    fi
+done