diff --git a/doc/testing.rst b/doc/testing.rst
index 5f1261af2b55ef90391a9aefaf6894547cb68605..db9f780276f591c616b5447de9535efb1442d4ab 100644
--- a/doc/testing.rst
+++ b/doc/testing.rst
@@ -15,6 +15,22 @@ the Mutalyzer source directory.
 .. note:: The Mutalyzer package must be installed before running the unit
           tests.
 
+By default, the tests use an in-memory SQLite database. This can be customized
+by setting the `MUTALYZER_TEST_DATABASE_URI` to a valid `SQLAlchemy connection
+URI
+<http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html#database-urls>`_
+(obviously, the contents of this database will be lost). For example, to use
+an SQLite database on the filesystem::
+
+    $ MUTALYZER_TEST_DATABASE_URI=sqlite:////tmp/mutalyzer.sql py.test
+
+Or, using `pg_virtualenv
+<https://alioth.debian.org/scm/loggerhead/pkg-postgresql/postgresql-common/trunk/view/head:/pg_virtualenv>`_
+(included with the Debian PostgreSQL packages), to run the tests with
+PostgreSQL::
+
+    $ pg_virtualenv bash -c 'MUTALYZER_TEST_DATABASE_URI=postgres://${PGUSER}:${PGPASSWORD}@${PGHOST}:${PGPORT}/${PGDATABASE} py.test'
+
 Tests are `run automatically on Travis CI
 <https://travis-ci.org/LUMC/mutalyzer>`_ for each pull request and push on
 GitHub.
diff --git a/mutalyzer/db/__init__.py b/mutalyzer/db/__init__.py
index 71e8eaf5cd4eeea706873fcb4b179168e34187d7..1655baa688fcd4bbc5212a012f666d9a2aa456da 100644
--- a/mutalyzer/db/__init__.py
+++ b/mutalyzer/db/__init__.py
@@ -47,7 +47,7 @@ def create_engine():
         engine = sqlalchemy.create_engine(url, **options)
 
         # For convenience, we also create tables if we're using an SQLite
-        # in-memory database. By definition they won't yet exist
+        # in-memory database. By definition they won't yet exist.
         Base.metadata.create_all(engine)
         return engine
 
diff --git a/tests/utils.py b/tests/utils.py
index f9cfce8bb44a2ce0e7bd09d9951e92d6b8ea1c34..aa90a1fd7b8c21bbc9c9ae97a676004b5a11854d 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -11,6 +11,7 @@ import shutil
 import tempfile
 
 from mutalyzer.config import settings
+from mutalyzer import db
 
 
 class TestEnvironment(object):
@@ -25,13 +26,21 @@ class TestEnvironment(object):
         log_handle, self.log_file = tempfile.mkstemp()
         os.close(log_handle)
 
+        database_uri = os.getenv('MUTALYZER_TEST_DATABASE_URI', 'sqlite://')
+
         settings.configure({'DEBUG':        False,
                             'TESTING':      True,
                             'CACHE_DIR':    self.cache_dir,
                             'REDIS_URI':    None,
-                            'DATABASE_URI': 'sqlite://',
+                            'DATABASE_URI': database_uri,
                             'LOG_FILE':     self.log_file})
 
+        # Mutalyzer create tables automatically if we're using an SQLite
+        # in-memory database.
+        if database_uri != 'sqlite://':
+            db.Base.metadata.drop_all(db.session.get_bind())
+            db.Base.metadata.create_all(db.session.get_bind())
+
         for fixture in fixtures:
             fixture()