diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 597d82f129c5ee8079df66298bf596bb772eaa8e..4a002f98da3b655c1d9ebb10726d43660fff2974 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,7 +7,7 @@ unittest:
     - python3 -V
     - uname -a
     - apt install -y sqlite3 locales-all git python3-flask python3-ldap3 python3-requests python3-lxml python3-icalendar python3-mysql.connector python3-requests python3-coverage
-    - python3 -m coverage run tests.py
+    - python3 -m coverage run runTests.py
     - python3 -m coverage report --include "./*"
     - python3 -m coverage report -m  --include "./*" > report.txt
     - python3 -m coverage html --include "./*"
@@ -33,4 +33,4 @@ deploy_staging:
     stage: deploy
     script:
     - pacman --noconfirm -Sy ansible git
-    
\ No newline at end of file
+    
diff --git a/README.md b/README.md
index 721b0ae13f96f404b3a1a0d177ffd2e524494f2a..547684cd20fadcea7b5f2df3d4a494dd821864e0 100644
--- a/README.md
+++ b/README.md
@@ -15,9 +15,9 @@ Hinweis: diese Variante startet eine lokale Testversion der Website, es sind nic
 Alternativ, insbesondere zum Testen der Zugriffsbeschränkungen: Siehe `nginx.example.conf`.
 
 ### Unittests
-Tests können mittels `./tests.py` ausgeführt werden.
+Tests können mittels `./runTests.py` ausgeführt werden.
 
-Coverage Tests können mittels `rm .coverage; python -m coverage run tests.py; python -m coverage html` ausgeführt werden. Dies erstellt einen Ordner `htmlcov` in dem HTML Output liegt.
+Coverage Tests können mittels `rm .coverage; python -m coverage run runTests.py; python -m coverage html` ausgeführt werden. Dies erstellt einen Ordner `htmlcov` in dem HTML Output liegt.
 
 ### Zum Mitmachen:
 1. Repo für den eigenen User forken, dafür den "Fork-Button" auf der Website verwenden
diff --git a/tests/urlcheck_legacy.py b/legacy_tests/urlcheck_legacy.py
similarity index 100%
rename from tests/urlcheck_legacy.py
rename to legacy_tests/urlcheck_legacy.py
diff --git a/tests/urlcheck_sinf.py b/legacy_tests/urlcheck_sinf.py
similarity index 100%
rename from tests/urlcheck_sinf.py
rename to legacy_tests/urlcheck_sinf.py
diff --git a/runTests.py b/runTests.py
new file mode 100755
index 0000000000000000000000000000000000000000..b265725ac2931b9df833c23587aece770ee5aa0b
--- /dev/null
+++ b/runTests.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python3
+import unittest
+import os
+import server
+
+def setUp():
+	server.app.testing = True
+
+def tearDown():
+	os.unlink(server.app.config['SQLITE_DB'])
+
+if __name__ == '__main__':
+	setUp()
+	try:
+		suite = unittest.defaultTestLoader.discover('./tests/', pattern="*")
+		unittest.TextTestRunner(verbosity=2, failfast=True).run(suite)
+	finally:
+		tearDown()
+
diff --git a/server.py b/server.py
index 2e54112629a39d9a043dc0c0a76f4e13e504ea2c..33cd9602824144b57f737c23b050da04be6f3b65 100644
--- a/server.py
+++ b/server.py
@@ -26,7 +26,7 @@ if sys.argv[0].endswith('run.py'):
 	config['SQLITE_INIT_DATA'] = True
 	config['DEBUG'] = True
 config.from_pyfile('config.py', silent=True)
-if sys.argv[0].endswith('tests.py'):
+if sys.argv[0].endswith('runTests.py'):
 	print('running in test mode')
 	import tempfile
 	# ensure we always use a clean sqlite db for tests
diff --git a/tests.py b/tests/test_general.py
old mode 100755
new mode 100644
similarity index 98%
rename from tests.py
rename to tests/test_general.py
index 1106b576b79095bae8c4d69d4c6077b4de4c36a4..2febe3873a99d21cfa9e78d459f60d3cfde7b752
--- a/tests.py
+++ b/tests/test_general.py
@@ -1,17 +1,15 @@
-#!/usr/bin/env python3
-
 import os
 import unittest
-import server
 import json
-
+import server
 import flask
 from flask import url_for
 
+
 class VideoTestCase(unittest.TestCase):
-	@classmethod
-	def tearDownClass(cls):
-		os.unlink(server.app.config['SQLITE_DB'])
+	def tearDown(self):
+		pass
+		#os.unlink(server.app.config['SQLITE_DB'])
 	
 	def setUp(self):
 		server.app.testing = True
@@ -279,8 +277,3 @@ class VideoTestCase(unittest.TestCase):
 			self.login(c)
 			r = self.app.get('/internal/cutprogress')
 			assert r.status_code == 200
-
-
-if __name__ == '__main__':
-	unittest.main()
-
diff --git a/tests/test_jobs.py b/tests/test_jobs.py
new file mode 100644
index 0000000000000000000000000000000000000000..245137db25acf52972210f616243bee897468c8c
--- /dev/null
+++ b/tests/test_jobs.py
@@ -0,0 +1,2 @@
+import os
+import unittest