2013-01-04 26 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

你可以创建你的初始化函数把这些变量作为参数,所以很容易欺骗他们在测试中