我有一个doctest,当找不到文件时,它会期望IOError。

>>> configParser('conffig.ini') # should not exist
Traceback (most recent call last):
    ...
IOError: No such file: /homes/ndeklein/workspace/MS/PyMS/conffig.ini


但是,如果我想从另一台PC上测试它,或者其他人想要测试它,则路径不会是/ homes / ndeklein / workspace / MS / PyMS /。我想做

>>> configParser('conffig.ini') # should not exist
Traceback (most recent call last):
    ...
IOError: No such file: os.path.abspath(conffig.ini)


但由于它在文档字符串中,因此将os.path.abspath(作为结果的一部分。

如何使docstring测试变量的结果?

最佳答案

您实际上是否需要与路径名匹配?如果不是,则只需使用省略号跳过输出的那部分:

>>> configParser('conffig.ini') # should not exist
Traceback (most recent call last):
    ...
IOError: No such file: ...


如果这样做,则需要捕获错误并手动测试该值。就像是:

>>> try:
...   configParser('conffig.ini') # should not exist
... except IOError as e:
...   print('ok' if str(e).endswith(os.path.abspath('conffig.ini')) else 'fail')
ok

关于python - 如何处理python doctest中的变量错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9567437/

10-11 06:53