diff --git a/tests/unittests/Makefile b/tests/unittests/Makefile
index f3f31dc5c20c1274190ebe5d6c73c03e8acbecc0..59e86f643b8c29d26c7c07e88f03878d71f4d93b 100644
--- a/tests/unittests/Makefile
+++ b/tests/unittests/Makefile
@@ -78,8 +78,5 @@ else
     CFLAGS += -DTEST_SUITES='$(subst $() $(),$(charCOMMA),$(UNIT_TESTS:tests-%=%))'
 endif
 
-test: SHELL=bash
 test:
-	@exec 5>&1 && \
-	LOG=$$("$(MAKE)" -s term | tee >(cat - >&5)) && \
-	grep 'OK ([1-9][0-9]* tests)' <<< $${LOG} > /dev/null
+	./tests/01-run.py
diff --git a/tests/unittests/tests/01-run.py b/tests/unittests/tests/01-run.py
new file mode 100755
index 0000000000000000000000000000000000000000..19456a8fc2494bc4113b5ec573bef35178e3ad4b
--- /dev/null
+++ b/tests/unittests/tests/01-run.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+
+# Copyright (C) 2014 Martine Lenders <mlenders@inf.fu-berlin.de>
+#
+# This file is subject to the terms and conditions of the GNU Lesser
+# General Public License v2.1. See the file LICENSE in the top level
+# directory for more details.
+
+import os, signal, sys, subprocess
+from pexpect import spawn, TIMEOUT, EOF
+
+DEFAULT_TIMEOUT = 5
+
+def main():
+    env = os.environ.copy()
+    child = spawn("make term", env=env, timeout=DEFAULT_TIMEOUT)
+    child.logfile = sys.stdout
+
+    try:
+        subprocess.check_output(('make', 'reset'), env=env,
+                                stderr=subprocess.PIPE)
+    except subprocess.CalledProcessError:
+        # make reset yields error on some boards even if successful
+        pass
+    try:
+        child.expect(r"OK \([0-9]+ tests\)")
+    except TIMEOUT:
+        print("There where errors in the unittests")
+        return 1
+    finally:
+        print("")
+        child.close()
+
+    return 0
+
+if __name__ == "__main__":
+    sys.exit(main())