繁体   English   中英

如何使用os.path编写跨平台单元测试?

[英]How to write cross-platform unit tests with os.path?

我想用os.path.basename写一个简单的单元测试

def test(path):
    return os.path.basename(os.path.normpath(title))

...

result = test('/path/foo')
assert result == 'foo'

result = test(r'c:\Users\Foo\Documents\foo')
assert result == 'foo'

问题

在Linux上运行的第二个测试(Windows路径)失败。
我想第一次测试将在Windows上失败。
实际上这是非常有意义的,因为存在不同的os.path模块

Python文档

由于不同的操作系统具有不同的路径名约定,因此标准库中有该模块的多个版本。

有没有办法导入特定版本的os.path
我已经尝试将sys.platform设置为win32

当然,我可以检查当前平台并只运行两个测试之一,但是我想知道是否有一种方法可以运行两个测试。

您应该始终使用/作为路径分隔符。 Python将其转换为适合您平台的正确分隔符。

\\用于启动转义序列。 使用/可以避免必须使用原始字符串来禁用\\转义序列(如您帖子中的第二个字符串一样)。

在原始字符串中使用\\可能还会导致os.path方法的行为异常(仅在Windows平台上有效)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM