unit testing - Nose/Unittest different tests dependent on Python version -
i writing a nose test api addition pandas i'm writing. use travis ci run test suites.
in version of python i'm using (python 2.7.6, numpy 1.9.2) following raises typeerror:
>>> numpy.round([1.23, 1.132], 2.5) typeerror: integer argument expected, got float   but in version being tested against travis ci (python 2.6.9, numpy 1.9.2) same command raises warning:
>>> numpy.round([1.23, 1.132], 2.5) /home/some_user/anaconda/envs/py26/lib/python2.6/site-packages/numpy/core/fromnumeric.py:45: deprecationwarning: integer argument expected, got float   result = getattr(asarray(obj), method)(*args, **kwds) array([ 1.23,  1.13])   this means assertraises(typeerror) test fails.
how can write test either check typeerror or assert_produces_warning(deprecationwarning) depending on python version being tested?
there seem 2 ways this, used in pandas testing source.
there several (very similar) variants on approach:
if sys.version_info < (2, 7):   and rather more delightful:
from distutils.version import looseversion if sys.version < looseversion('2.7'):   which has entertaining comment in docstring:
version numbering anarchists , software realists.
i don't know of either way being preferred on other.
Comments
Post a Comment