diff --git a/apertis_tests_lib/tracker.py b/apertis_tests_lib/tracker.py
index 49133933eb10a8d04792b2850a420cc1ea5b74b6..ca7ff49ff99a79ea99790ab1f67caa5d2d21a0ec 100644
--- a/apertis_tests_lib/tracker.py
+++ b/apertis_tests_lib/tracker.py
@@ -18,7 +18,7 @@ from gi.repository import Tracker
 from . import LONG_JPEG_NAME
 
 
-class TrackerIndexer():
+class TrackerIndexerMixin:
     def __init__(self):
         # Stop tracker and reset its DB
         subprocess.check_call(
@@ -96,16 +96,13 @@ class TrackerIndexer():
 
         # Must have one and only one result
         cursor = self.conn.query(query, None)
-        if not cursor.next(None):
-            raise Exception("Query '%s' returned no result" % query)
-        if cursor.next(None):
-            raise Exception("Query '%s' returned more than one result" % query)
+        self.assertTrue(cursor.next(None))
+        self.assertFalse(cursor.next(None))
 
     def assert_not_indexed(self, path):
         query = ('select ?urn where { ?urn nie:url "file://%s" }') % (path)
         cursor = self.conn.query(query, None)
-        if cursor.next(None):
-            raise Exception("Query '%s' returned results" % query)
+        self.assertFalse(cursor.next(None))
 
     def assert_all_indexed(self, root):
         playable_query = '?urn bosch:playable true . '
diff --git a/tracker/automated/test-tracker.py b/tracker/automated/test-tracker.py
index 44e477772890daee21fd23c3a46a2dfd0725bf4b..785bee99ccff6131fac92381cb3aa91edc8adc4a 100755
--- a/tracker/automated/test-tracker.py
+++ b/tracker/automated/test-tracker.py
@@ -20,16 +20,19 @@ from gi.repository import Grl
 # import from toplevel directory
 sys.path.insert(0, os.path.join(os.path.dirname(__file__),
                                 os.pardir, os.pardir))
-from apertis_tests_lib.tracker import TrackerIndexer
-from apertis_tests_lib import LONG_JPEG_NAME
+from apertis_tests_lib.tracker import TrackerIndexerMixin
 from apertis_tests_lib import ApertisTest
+from apertis_tests_lib import LONG_JPEG_NAME
+
 
+class TrackerTest(ApertisTest, TrackerIndexerMixin):
+    def __init__(self, *args, **kwargs):
+        ApertisTest.__init__(self, *args, **kwargs)
+        TrackerIndexerMixin.__init__(self)
 
-class TrackerTest(ApertisTest):
     def setUp(self):
         self.loop = GLib.MainLoop.new(None, False)
         self.homedir = os.path.expanduser("~")
-        self.indexer = TrackerIndexer()
         self.copy_medias(self.homedir)
 
         # Monitor thumbnail creation to know when it's done. The DBus API
@@ -104,7 +107,7 @@ class TrackerTest(ApertisTest):
 
     def tracker_initial_tests(self):
         print("TrackerTest: initial tests")
-        self.indexer.assert_all_indexed(self.homedir)
+        self.assert_all_indexed(self.homedir)
 
     def tracker_update_tests(self):
         print("TrackerTest: update tests")
@@ -113,21 +116,20 @@ class TrackerTest(ApertisTest):
         filename = self.homedir + '/Documents/something.txt'
         with open(filename, 'w') as f:
             f.write('something')
-        self.indexer.wait(True)
-        self.indexer.assert_indexed(
-            filename, '?urn nie:plainTextContent "something"')
+        self.wait(True)
+        self.assert_indexed(filename, '?urn nie:plainTextContent "something"')
 
         # Modify the file should re-index it
         with open(filename, 'w') as f:
             f.write('something else')
-        self.indexer.wait(True)
-        self.indexer.assert_indexed(
+        self.wait(True)
+        self.assert_indexed(
             filename, '?urn nie:plainTextContent "something else"')
 
         # Delete file and assert it's not indexed anymore
         os.remove(filename)
-        self.indexer.wait(False)
-        self.indexer.assert_not_indexed(filename)
+        self.wait(False)
+        self.assert_not_indexed(filename)
 
     def assert_has_thumbnail(self, filename):
         # Note that this is the path for local storage only, not for removable
@@ -218,7 +220,7 @@ class TrackerTest(ApertisTest):
     def test_all(self):
         self.tracker_config_tests()
         self.tracker_journal_tests()
-        self.indexer.start()
+        self.start()
         self.tracker_initial_tests()
         self.tracker_update_tests()
         self.tracker_grilo_tests()
diff --git a/tracker/manual/test-removable-device.py b/tracker/manual/test-removable-device.py
index 03ba80a0fb966a350c602ecf8047b359884b7b1a..d320c15d795a2f7c415efd61571d890aac7599bc 100755
--- a/tracker/manual/test-removable-device.py
+++ b/tracker/manual/test-removable-device.py
@@ -18,11 +18,15 @@ from gi.repository import Gio
 # import from toplevel directory
 sys.path.insert(0, os.path.join(os.path.dirname(__file__),
                                 os.pardir, os.pardir))
-from apertis_tests_lib.tracker import TrackerIndexer
+from apertis_tests_lib.tracker import TrackerIndexerMixin
 from apertis_tests_lib import ApertisTest
 
 
-class TestRemovableDevice(ApertisTest):
+class TestRemovableDevice(ApertisTest, TrackerIndexerMixin):
+    def __init__(self, *args, **kwargs):
+        ApertisTest.__init__(self, *args, **kwargs)
+        TrackerIndexerMixin.__init__(self)
+
     def setUp(self):
         self.loop = GLib.MainLoop.new(None, False)
         self.monitor = Gio.VolumeMonitor.get()
@@ -41,10 +45,9 @@ class TestRemovableDevice(ApertisTest):
         self.loop.run()
 
         # Copy our medias and start indexing
-        self.indexer = TrackerIndexer()
         self.copy_medias(self.path)
-        self.indexer.start()
-        self.indexer.assert_all_indexed(self.path)
+        self.start()
+        self.assert_all_indexed(self.path)
 
 if __name__ == "__main__":
     unittest.main()