More cleanup and updating of tests

Clean up setup_test and add a teardown_test method

Implement new setup/teardown in novice tests

Fix warning handling in pil_plugin

Update rank tests
This commit is contained in:
Steven Silvester
2014-12-23 16:50:50 -06:00
parent a4e4e57ba5
commit 1b905d4cef
6 changed files with 69 additions and 32 deletions
+21 -8
View File
@@ -179,14 +179,27 @@ def mono_check(plugin, fmt='png'):
def setup_test():
warnings.simplefilter('error')
with all_warnings():
from scipy import signal, ndimage, special, optimize, linalg
from scipy.io import loadmat
from skimage import filter, viewer, data
data.moon()
if os.environ.get('TRAVIS_PYTHON_VERSION', None) == '2.7':
warnings.simplefilter('default')
"""Default package level setup routine for skimage tests.
Import packages known to raise errors, and then
force warnings to raise errors.
"""
warnings.simplefilter('default')
from scipy import signal, ndimage, special, optimize, linalg
from scipy.io import loadmat
from skimage import filter, viewer, data
# trigger PIL warnings
data.moon()
warnings.simplefilter('error')
def teardown_test():
"""Default package level teardown routine for skimage tests.
Restore warnings to default behavior
"""
warnings.simplefilter('default')
if __name__ == '__main__':
color_check('pil')
+9 -2
View File
@@ -1,2 +1,9 @@
from skimage._shared.testing import setup_test
setup_test()
from skimage._shared.testing import setup_test, teardown_test
def setup():
setup_test()
def tearDown():
teardown_test()
+17 -14
View File
@@ -7,18 +7,15 @@ from skimage import img_as_ubyte, img_as_float
from skimage import data, util, morphology
from skimage.morphology import cmorph, disk
from skimage.filters import rank
from skimage._shared.utils import all_warnings
np.random.seed(0)
from skimage._shared._warnings import expected_warnings
def test_all():
with all_warnings(): # precision loss
with expected_warnings(['precision loss', 'non-integer']):
check_all()
def check_all():
np.random.seed(0)
image = np.random.rand(25, 25)
selem = morphology.disk(1)
refs = np.load(os.path.join(skimage.data_dir, "rank_filter_tests.npz"))
@@ -158,7 +155,11 @@ def test_bitdepth():
for i in range(5):
image = np.ones((100, 100), dtype=np.uint16) * 255 * 2 ** i
with all_warnings(): # bit depth
if i > 3:
expected = ["Bitdepth of"]
else:
expected = []
with expected_warnings(expected):
rank.mean_percentile(image=image, selem=elem, mask=mask,
out=out, shift_x=0, shift_y=0, p0=.1, p1=.9)
@@ -269,7 +270,7 @@ def test_compare_ubyte_vs_float():
for method in methods:
func = getattr(rank, method)
out_u = func(image_uint, disk(3))
with all_warnings(): # precision loss
with expected_warnings(['precision loss']):
out_f = func(image_float, disk(3))
assert_equal(out_u, out_f)
@@ -282,9 +283,8 @@ def test_compare_8bit_unsigned_vs_signed():
image = img_as_ubyte(data.camera())
image[image > 127] = 0
image_s = image.astype(np.int8)
with all_warnings(): # precision loss
with expected_warnings(['sign loss', 'precision loss']):
image_u = img_as_ubyte(image_s)
assert_equal(image_u, img_as_ubyte(image_s))
methods = ['autolevel', 'bottomhat', 'equalize', 'gradient', 'maximum',
@@ -294,7 +294,7 @@ def test_compare_8bit_unsigned_vs_signed():
for method in methods:
func = getattr(rank, method)
with all_warnings(): # sign loss
with expected_warnings(['sign loss', 'precision loss']):
out_u = func(image_u, disk(3))
out_s = func(image_s, disk(3))
assert_equal(out_u, out_s)
@@ -486,11 +486,11 @@ def test_entropy():
selem = np.ones((64, 64), dtype=np.uint8)
data = np.tile(
np.reshape(np.arange(4096), (64, 64)), (2, 2)).astype(np.uint16)
with all_warnings(): # bitdepth
with expected_warnings(['Bitdepth of 11']):
assert(np.max(rank.entropy(data, selem)) == 12)
# make sure output is of dtype double
with all_warnings(): # bitdepth
with expected_warnings(['Bitdepth of 11']):
out = rank.entropy(data, np.ones((16, 16), dtype=np.uint8))
assert out.dtype == np.double
@@ -522,12 +522,15 @@ def test_16bit():
for bitdepth in range(17):
value = 2 ** bitdepth - 1
image[10, 10] = value
with all_warnings(): # bitdepth
if bitdepth > 11:
expected = ['Bitdepth of %s' % (bitdepth - 1)]
else:
expected = []
with expected_warnings(expected):
assert rank.minimum(image, selem)[10, 10] == 0
assert rank.maximum(image, selem)[10, 10] == value
assert rank.mean(image, selem)[10, 10] == int(value / selem.size)
def test_bilateral():
image = np.zeros((21, 21), dtype=np.uint16)
selem = np.ones((3, 3), dtype=np.uint8)
+9 -2
View File
@@ -1,2 +1,9 @@
from skimage._shared.testing import setup_test
setup_test()
from skimage._shared.testing import setup_test, teardown_test
def setup():
setup_test()
def tearDown():
teardown_test()
+4 -4
View File
@@ -7,7 +7,7 @@ from PIL import Image
from skimage.util import img_as_ubyte, img_as_uint
from skimage.external.tifffile import (
imread as tif_imread, imsave as tif_imsave)
from skimage._shared.utils import all_warnings
from skimage._shared._warnings import expected_warnings
def imread(fname, dtype=None, img_num=None, **kwargs):
@@ -48,13 +48,13 @@ def imread(fname, dtype=None, img_num=None, **kwargs):
im = Image.open(fname)
try:
# this will raise an IOError if the file is not readable
im.getdata()[0]
with expected_warnings(['unclosed file']):
im.getdata()[0]
except IOError:
site = "http://pillow.readthedocs.org/en/latest/installation.html#external-libraries"
raise ValueError('Could not load "%s"\nPlease see documentation at: %s' % (fname, site))
else:
with all_warnings(): # PIL resource warnings
return pil_to_ndarray(im, dtype=dtype, img_num=img_num)
return pil_to_ndarray(im, dtype=dtype, img_num=img_num)
def pil_to_ndarray(im, dtype=None, img_num=None):
+9 -2
View File
@@ -1,2 +1,9 @@
from skimage._shared.testing import setup_test
setup_test()
from skimage._shared.testing import setup_test, teardown_test
def setup():
setup_test()
def tearDown():
teardown_test()