由于错误消息不一致,Doctest在Python v2.7中成功,但在Python 2.6中没有成功

时间:2014-12-18 00:01:29

标签: python python-2.6 pypy doctest

我已经在我的代码注释中编写了一些doc测试用例,并将它们放在travis-ci下以运行Python v2.6,v2.7和Pypy。只有v2.7成功了。

我的doctest如下所示::

>>> a = ['a', 'b']
>>> a.index('i')
Traceback (most recent call last):
...
ValueError: 'i' is not in list

Python v2.6和Pypy都抱怨错误返回:

ValueError: list.index(x): x not in list

有没有比仅仅删除这些测试用例更好的测试方法?

由于

chfw

2 个答案:

答案 0 :(得分:1)

您是否尝试使用ELLIPSIS这样:

>>> a = ['a', 'b']
>>> a.index('i') # doctest:+ELLIPSIS
Traceback (most recent call last):
...
ValueError: ...

答案 1 :(得分:0)

避免使用doctests,因为它们确实不可移植。请考虑使用unittest(内置),nosetestspy.test等测试框架。测试中的断言可以是可移植的,因为它们可以用一般方式编写。

您可以针对特定版本的Python进行某些测试,以便您只测试这些Python版本中的错误消息内容(如果需要)。或者,换句话说,除了特定的Python版本之外,您可以允许跳过大多数Python版本的测试。