我需要扩展一个python代码,它有很多硬编码路径
为了不让一切混乱,我想在修改之前为代码创建单元测试:它将作为新代码的非回归测试(没有硬编码路径)
但是由于硬编码的系统路径,我将在chroot树中运行我的测试(我不想污染我的系统目录)
我的问题是我想设置chroot只用于测试,这可以通过os.chroot公司仅具有root权限(我不想以root身份运行测试脚本)
实际上,我只需要一个伪树目录,这样当open('/etc/resolv.conf)
的代码检索到一个伪目录决议.conf而不是我的系统一
显然,我不想在代码中替换自己的硬编码路径,因为它不是真实的回归测试
你知道如何做到这一点吗?在
谢谢
请注意,使用用户帐户可以读取所有访问的路径
您可以使用setuidroot的helper应用程序来运行chroot;这将避免需要以root身份运行测试。当然,这可能仍然会打开一个本地根攻击,所以应该只采取适当的预防措施(例如在VM映像中)。在
无论如何,任何使用chroot的解决方案本质上都依赖于平台,因此它相当尴尬。实际上我更喜欢戴夫·韦伯(override
open
)的想法,我必须承认。。。在在您的测试设置中,您可以使用您自己的版本重写正在测试的模块中的内置
open
,该版本从您的“伪”目录结构中读取:相关问题 更多 >
编程相关推荐