Nose/Unittest不同的测试取决于Python版本

Nose/Unittest不同的测试取决于Python版本,python,unit-testing,Python,Unit Testing,我正在为我正在编写的熊猫之外的API编写。他们使用Travis CI运行测试套件 在我使用的Python版本(Python2.7.6,numpy 1.9.2)中,以下内容引发了一个TypeError: >>> numpy.round([1.23, 1.132], 2.5) TypeError: integer argument expected, got float 但在Travis CI测试的版本(Python 2.6.9,numpy 1.9.2)中,相同的命令会发出警告:

我正在为我正在编写的熊猫之外的API编写。他们使用Travis CI运行测试套件

在我使用的Python版本(Python2.7.6,numpy 1.9.2)中,以下内容引发了一个
TypeError

>>> numpy.round([1.23, 1.132], 2.5)
TypeError: integer argument expected, got float
但在Travis CI测试的版本(Python 2.6.9,numpy 1.9.2)中,相同的命令会发出警告:

>>> 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])
这意味着我的
assertRaises(TypeError)
测试失败


根据测试的Python版本,我如何编写一个测试来检查
TypeError
或执行
assert\u生成警告(DeprecationWarning)

在pandas测试源代码中,似乎有两种方法可以做到这一点

这种方法有几种(非常类似的)变体:

if sys.version_info < (2, 7):
如果系统版本信息<(2,7):
更令人高兴的是:

from distutils.version import LooseVersion
if sys.version < LooseVersion('2.7'):
从distutils.version导入
如果sys.version
其文档字符串中有有趣的评论:

无政府主义者和软件现实主义者的版本编号


我不知道哪种方法比另一种更受欢迎。

在熊猫测试源代码中,似乎有两种方法可以做到这一点

这种方法有几种(非常类似的)变体:

if sys.version_info < (2, 7):
如果系统版本信息<(2,7):
更令人高兴的是:

from distutils.version import LooseVersion
if sys.version < LooseVersion('2.7'):
从distutils.version导入
如果sys.version
其文档字符串中有有趣的评论:

无政府主义者和软件现实主义者的版本编号

我不知道哪种方式比另一种更受欢迎