diff --git a/tests/__init__.py b/tests/__init__.py
index eb16fa95ab31bdcce6494524b28a481493cf7cb1..4960e909532e5d5f1a970fd9f44368ed23c7d31e 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -294,7 +294,8 @@ def make_mock_feat_analysis(featdir,
 
     if indata:
         filtfunc = op.join(featdir, 'filtered_func_data.nii.gz')
-        make_random_image(filtfunc, shape4D, xform)
+        img = make_random_image(filtfunc, shape4D, xform)
+        del img
 
     # and some dummy voxelwise EV files
     if voxEVs:
@@ -311,7 +312,10 @@ def make_mock_feat_analysis(featdir,
             data = data.reshape(list(shape) + [1]).repeat(timepoints, axis=3)
             data[..., :] += range(i, i + timepoints)
 
-            nib.save(nib.nifti1.Nifti1Image(data, xform), vf)
+            img = nib.nifti1.Nifti1Image(data, xform)
+
+            nib.save(img, vf)
+            del img
 
     otherFiles  = []
     otherShapes = []
@@ -342,7 +346,8 @@ def make_mock_feat_analysis(featdir,
         otherShapes.extend([shape] * len(files))
 
     for f, s in zip(otherFiles, otherShapes):
-        make_random_image(f, s, xform)
+        img = make_random_image(f, s, xform)
+        del img
 
     return featdir
 
diff --git a/tests/test_featdesign.py b/tests/test_featdesign.py
index f685ff712364c6338faaade5af3cea151ccc87a5..b10aa23091954d0dd4b840d0c11132d3427bd8ab 100644
--- a/tests/test_featdesign.py
+++ b/tests/test_featdesign.py
@@ -103,17 +103,12 @@ with the following commands:
 """
 
 
-import              os
-import os.path   as op
-import itertools as it
-import              glob
-import              shutil
-import numpy     as np
+import os.path as op
+import numpy   as np
 
 import pytest
 
 import tests
-import fsl.data.image        as fslimage
 import fsl.data.featdesign   as featdesign
 import fsl.data.featanalysis as featanalysis
 
@@ -172,6 +167,9 @@ def test_FEATFSFDesign():
         assert des.getDesign().shape == desshape
         assert des.getDesign(rvox).shape == desshape
 
+        del des
+        des = None
+
 
 def test_FEATFSFDesign_firstLevelVoxelwiseEV(seed):
 
@@ -214,6 +212,8 @@ def test_FEATFSFDesign_firstLevelVoxelwiseEV(seed):
             for i, evidx in enumerate(voxevIdxs):
                 expect = np.arange(i, i + 45) + offset
                 assert np.all(np.isclose(matrix[:, evidx], expect))
+        del design
+        design = None
 
 
 def test_getFirstLevelEVs_1():
@@ -240,6 +240,8 @@ def test_getFirstLevelEVs_1():
         assert isinstance(evs[i], evtype)
         for k, v in atts.items():
             assert getattr(evs[i], k) == v
+    del evs
+    evs = None
 
 
 def test_getFirstLevelEVs_2():
@@ -267,6 +269,8 @@ def test_getFirstLevelEVs_2():
         assert isinstance(evs[i], evtype)
         for k, v in atts.items():
             assert getattr(evs[i], k) == v
+    del evs
+    evs = None
 
 
 def test_getFirstLevelEVs_3():
@@ -307,7 +311,6 @@ def test_getFirstLevelEVs_3():
                 (featdesign.ConfoundEV,           {'index' : 30, 'confIndex'   : 0}),
                 (featdesign.ConfoundEV,           {'index' : 31, 'confIndex'   : 1})]
 
-
     evs = featdesign.getFirstLevelEVs(featdir, settings, matrix)
 
     assert len(evs) == 32
@@ -318,6 +321,10 @@ def test_getFirstLevelEVs_3():
         for k, v in atts.items():
             assert getattr(evs[i], k) == v
 
+    del evs
+    evs = None
+
+
 def test_getFirstLevelEVs_realdata():
     featdir  = op.join(datadir, '1stlevel_realdata.feat')
     settings = featanalysis.loadSettings(featdir)
@@ -336,7 +343,8 @@ def test_getFirstLevelEVs_realdata():
         assert isinstance(evs[i], evtype)
         for k, v in atts.items():
             assert getattr(evs[i], k) == v
-
+    del evs
+    evs = None
 
 
 def test_getHigherLevelEVs_1():
@@ -351,8 +359,8 @@ def test_getHigherLevelEVs_1():
     assert isinstance(evs[0], featdesign.NormalEV)
     assert evs[0].index     == 0
     assert evs[0].origIndex == 0
-
-
+    del evs
+    evs = None
 
 
 def test_getHigherLevelEVs_2():
@@ -368,7 +376,8 @@ def test_getHigherLevelEVs_2():
     assert evs[0].index     == 0
     assert evs[0].origIndex == 0
     assert isinstance(evs[1], featdesign.VoxelwiseEV)
-
+    del evs
+    evs = None
 
 
 def test_loadDesignMat():
diff --git a/tests/test_featimage.py b/tests/test_featimage.py
index 6489cc0bfc41582eae0640ba92adfd315f8f2552..fb33c6e4ddb13b43dbc4d1883faddf227489b305 100644
--- a/tests/test_featimage.py
+++ b/tests/test_featimage.py
@@ -91,7 +91,7 @@ def test_FEATImage_attributes():
                     clustMasks=False)
             else:
                 featdir = op.join(datadir, featdir)
-                
+
             # Now create a FEATImage. We validate its
             # attributes against the values returned by
             # the functions in featdesign/featanalysis.
@@ -126,12 +126,16 @@ def test_FEATImage_attributes():
                 expect = featanalysis.loadClusterResults(featdir, settings, ci)
                 assert len(result) == len(expect)
                 assert all([rc.nvoxels == ec.nvoxels for rc, ec in zip(result, expect)])
+            del design
+            del fi
+            fi = None
+
 
 
 def test_FEATImage_imageAccessors():
 
     for featdir in TEST_ANALYSES.keys():
-        
+
         shape = TEST_ANALYSES[featdir]['shape']
         xform = TEST_ANALYSES[featdir]['xform']
         
@@ -153,25 +157,26 @@ def test_FEATImage_imageAccessors():
             nevs  = fi.numEVs()
             ncons = fi.numContrasts()
 
-            # Testing the FEATImage intenral cache
+            # Testing the FEATImage internal cache
             for i in range(2):
                 assert fi.getResiduals().shape == shape4D
-
                 for ev in range(nevs):
                     assert fi.getPE(ev).shape == shape
                 for con in range(ncons):
                     assert fi.getCOPE(       con).shape == shape
                     assert fi.getZStats(     con).shape == shape
                     assert fi.getClusterMask(con).shape == shape
-            
+            del fi
+            fi = None
+
 
 def test_FEATImage_nostats():
-    
+
     featdir = op.join(datadir, '1stlevel_nostats.feat')
     shape   = (4, 4, 5, 45)
 
     with tests.testdir() as testdir:
-        
+
         featdir = tests.make_mock_feat_analysis(featdir, testdir, shape)
         fi      = featimage.FEATImage(featdir)
 
@@ -182,13 +187,15 @@ def test_FEATImage_nostats():
 
         with pytest.raises(Exception):
             fi.fit([1, 2, 3], (2, 2, 2))
-            
+
         with pytest.raises(Exception):
-            fi.partialFit([1, 2, 3], (2, 2, 2)) 
-                    
+            fi.partialFit([1, 2, 3], (2, 2, 2))
+        del fi
+        fi = None
+
 
 def test_FEATImage_fit_firstLevel():
-    
+
     featdir  = op.join(datadir, '1stlevel_realdata.feat')
     fi       = featimage.FEATImage(featdir)
     expect   = np.array([
@@ -203,8 +210,8 @@ def test_FEATImage_fit_firstLevel():
         10287.91883737,  10325.38456267,  10341.92299781,  10347.17916861,
         10348.58339616,  10348.89634025,  10348.93522057,  10345.25397481,
         10288.9236822 ,  10315.64160242,  10449.39567496,  10558.66999883,
-        10597.64918744]) 
-    
+        10597.64918744])
+
     # bad contrast
     with pytest.raises(Exception):
         fi.fit([1, 2, 3, 4, 5, 6, 7], (2, 2, 2))
@@ -215,20 +222,24 @@ def test_FEATImage_fit_firstLevel():
 
     result = fi.fit([1, 1, 1, 1], (2, 2, 2))
     assert np.all(np.isclose(result, expect))
+    del fi
+    fi = None
 
 
 def test_FEATImage_fit_higherLevel():
-    
+
     featdir = op.join(datadir, '2ndlevel_realdata.gfeat/cope1.feat')
     fi      = featimage.FEATImage(featdir)
     expect  = np.array([86.37929535, 86.37929535, 86.37929535])
     result = fi.fit([1], (5, 5, 5))
-    
+
     assert np.all(np.isclose(result, expect))
+    del fi
+    fi = None
 
 
 def test_FEATImage_partialFit():
-    
+
     featdir = op.join(datadir, '1stlevel_realdata.feat')
     fi      = featimage.FEATImage(featdir)
     expect  = np.array([
@@ -245,14 +256,16 @@ def test_FEATImage_partialFit():
         10203.21032619,  10136.1942605 ,  10128.23728873,  10416.78984136,
         10118.51262128])
     result = fi.partialFit([1, 1, 1, 1], (2, 2, 2))
-    
+
     assert np.all(np.isclose(result, expect))
+    del fi
+    fi = None
 
 
 def test_modelFit(seed):
 
     for i in range(500):
-        
+
         # 2 evs, 20 timepoints
         # First EV is a boxcar,
         # second is a random regressor
@@ -265,12 +278,12 @@ def test_modelFit(seed):
             design[:, ev] = design[:, ev] - design[:, ev].mean()
 
         # Generate some random PEs, and
-        # generate the data that would 
+        # generate the data that would
         # have resulted in them
         pes      = np.random.random(2)
         expect   = np.dot(design, pes)
         contrast = [1] * design.shape[1]
-        
+
         result1 = featimage.modelFit(expect, design, contrast, pes, True)
         result2 = featimage.modelFit(expect, design, contrast, pes, False)