2013-01-04 29 views
3

在腳本開始時,我使用platform.systemplatform.release來確定腳本運行在哪個操作系統和版本上(因此它知道它的數據位於Mac上的應用程序支持,位於unix-like和non-mac unix,appdata窗口< = XP,以及appdata /在Windows> = Vista上漫遊)。我想測試一系列if s,elif s和else s是什麼決定了操作系統和發行版,但我只能訪問Mac 10.6.7,某些未知版本的Linux和Windows 7。有沒有辦法喂platform假系統和釋放信息,所以我可以肯定XP,Solaris等,將無需安裝正確處理腳本?給python「平臺」庫僞造平臺信息?

+1

我忘了提,我不希望虛擬化。 – tkbx

回答

2

也許像

>>> platform.system = lambda: "whatever" 
>>> platform.system() 
'whatever' 
+1

好的。有什麼地方可以查看給定操作系統的系統/版本信息? Windows 7的版本是「7」,但Snow Leopard的版本「Darwin Kernel Version 10.7.0:Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37〜1/RELEASE_I386」 – tkbx

+0

也許[this](http ://stackoverflow.com/q/3948866/3497)會有幫助嗎? – Joril

1

您可能想探索mockingplatform爲您的測試。或者,您可以直接使用修補程序platform,甚至直接與sys.modules混淆以覆蓋默認的platform模塊,但mock已被設計爲自包含,並且還具有在代碼中清楚地顯示什麼是和不是測試工具的好處,所以你不會無意中獲得生產代碼中發佈的測試功能。

1

你可以創建你的初始化函數把這些變量作爲參數,所以很容易欺騙他們在測試中