我已经在我的代码注释中编写了一些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
答案 0 :(得分:1)
您是否尝试使用ELLIPSIS这样:
>>> a = ['a', 'b']
>>> a.index('i') # doctest:+ELLIPSIS
Traceback (most recent call last):
...
ValueError: ...
答案 1 :(得分:0)
避免使用doctests,因为它们确实不可移植。请考虑使用unittest
(内置),nosetests
或py.test
等测试框架。测试中的断言可以是可移植的,因为它们可以用一般方式编写。
您可以针对特定版本的Python进行某些测试,以便您只测试这些Python版本中的错误消息内容(如果需要)。或者,换句话说,除了特定的Python版本之外,您可以允许跳过大多数Python版本的测试。