硬编码路径回归测试

2024-04-25 08:30:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要扩展一个python代码,它有很多硬编码路径
为了不让一切混乱,我想在修改之前为代码创建单元测试:它将作为新代码的非回归测试(没有硬编码路径)

但是由于硬编码的系统路径,我将在chroot树中运行我的测试(我不想污染我的系统目录)
我的问题是我想设置chroot只用于测试,这可以通过os.chroot公司仅具有root权限(我不想以root身份运行测试脚本)

实际上,我只需要一个伪树目录,这样当open('/etc/resolv.conf)的代码检索到一个伪目录决议.conf而不是我的系统一

显然,我不想在代码中替换自己的硬编码路径,因为它不是真实的回归测试

你知道如何做到这一点吗?在

谢谢

请注意,使用用户帐户可以读取所有访问的路径


Tags: 代码路径目录脚本权限编码osconf
2条回答

您可以使用setuidroot的helper应用程序来运行chroot;这将避免需要以root身份运行测试。当然,这可能仍然会打开一个本地根攻击,所以应该只采取适当的预防措施(例如在VM映像中)。在

无论如何,任何使用chroot的解决方案本质上都依赖于平台,因此它相当尴尬。实际上我更喜欢戴夫·韦伯(overrideopen)的想法,我必须承认。。。在

在您的测试设置中,您可以使用您自己的版本重写正在测试的模块中的内置open,该版本从您的“伪”目录结构中读取:

import mymod
import os.path

def chroot_open(filename,*args):
    filename = os.path.join("/home/you/fakeroot",filename)
    return open(filename,*args)

mymod.open = chroot_open

相关问题 更多 >