我正在编写a nose test,以便为我写的pandas添加API。他们使用Travis CI来运行他们的测试套件。
在我使用的Python版本(Python 2.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_produces_warning(DeprecationWarning)
的测试?
答案 0 :(得分:0)
似乎有两种方法可以做到这一点,在pandas测试源中使用。
这种方法有几种(非常相似的)变体:
if sys.version_info < (2, 7):
更令人愉快的是:
from distutils.version import LooseVersion
if sys.version < LooseVersion('2.7'):
在其文档字符串中有令人愉快的评论:
无政府主义者和软件现实主义者的版本编号。
我不知道哪种方式比另一方更受欢迎。