如何编写与路径分隔符无关的Python doctest

ash*_*bar 6 doctest python-2.6

有没有一种方法可以将带有文件路径的doctest作为输出,而不管它运行在哪个操作系统上,该测试都会成功?

例如,在Windows上,它将起作用:

r"""
>>> import foo
>>> relative_path = foo.getRelativePath()
>>> print relative_path 
'bar\\foobar'
"""
if __name__ == '__main__':
    from doctest import testmod
    print testmod()
Run Code Online (Sandbox Code Playgroud)

但是,当然会在Linux上失败并产生类似于以下内容的错误:

Failed example:
    print relative_path 
Expected:
    'bar\\foobar'
Got:
    'bar/foobar'
Run Code Online (Sandbox Code Playgroud)

如何在任何操作系统上执行以上操作?

编辑

我知道我可以做这样的事情:

>>> relative_path == os.path.join('bar', 'foobar')
True
Run Code Online (Sandbox Code Playgroud)

但是我想知道是否有其他更好的方法可以做到这一点。

Kim*_*ing -3

您可以通过调用获取依赖于操作系统的路径分隔符

sep = os.sep
Run Code Online (Sandbox Code Playgroud)

然后处理您正在使用的平台的相对路径。或者你可以使用

os.abspath()
Run Code Online (Sandbox Code Playgroud)

反而。有多种选项(请参阅http://pymotw.com/2/ospath/)。我选择了abspath变体。

-金

  • 我的问题是关于 **doctest** 输出中的路径分隔符,而不是一般的 Python。 (2认同)