处理硬编码路径的回归测试

Lou*_*uis 3 python linux unit-testing regression

我需要扩展一个具有大量硬编码路径的python代码
为了不弄乱所有内容,我想在修改之前为代码创建单元测试:它将用作我的新代码的非回归测试(这将是没有硬编码路径)

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

事实上,我只需要一个伪树指针,以便当代码open('/etc/resolv.conf)检索到假的resolv.conf而不是我的系统时

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

你知道如何实现这个目标吗?

谢谢

请注意,访问的所有路径都可以通过用户accout读取

Dav*_*ebb 5

在您的测试设置中,您可以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
Run Code Online (Sandbox Code Playgroud)