簡體   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