diff --git a/tests/test_atlases_query.py b/tests/test_atlases_query.py
index 449a4f25f8b5d624f4770758899cd37cc10043b7..7b61bb36a89b74c9e27beb2fa9adb952d68f85ce 100644
--- a/tests/test_atlases_query.py
+++ b/tests/test_atlases_query.py
@@ -15,6 +15,7 @@ import                    pytest
 import fsl.data.atlases    as fslatlases
 import fsl.data.image      as fslimage
 import fsl.utils.transform as transform
+import fsl.utils.cache     as cache
 
 from . import (testdir, make_random_mask)
 
@@ -33,15 +34,18 @@ def _repeat(iterator, n):
             yield elem
 
 
-# atype: (label|prob)
-_atlases = {}
+# We can't cache all atlases, because CI
+# jobs will take up too much memory and
+# be killed
+_atlases = cache.Cache(3)
 def _get_atlas(atlasID, res, summary=False):
-    atlas = _atlases.get((atlasID, res, summary))
+    atlas = _atlases.get((atlasID, res, summary), default=None)
     if atlas is None:
         atlas = fslatlases.loadAtlas(atlasID,
                                      loadSummary=summary,
                                      resolution=res)
-        _atlases[atlasID, res, summary] = atlas
+        _atlases.put((atlasID, res, summary), atlas)
+
     return atlas
 
 def _random_atlas(atype, res, summary=False):