Lou*_*uis 3 python linux unit-testing regression
我需要扩展一个具有大量硬编码路径的python代码
为了不弄乱所有内容,我想在修改之前为代码创建单元测试:它将用作我的新代码的非回归测试(这将是没有硬编码路径)
但是由于硬编码的系统路径,我将在chroot树中运行我的测试(我不想污染我的系统目录)
我的问题是我想设置chroot仅用于测试,这可以用os.chroot只有root权限(我不想以root身份运行测试脚本)
事实上,我只需要一个伪树指针,以便当代码open('/etc/resolv.conf)检索到假的resolv.conf而不是我的系统时
我显然不想在代码中替换自己的硬编码路径,因为它不是真正的回归测试
你知道如何实现这个目标吗?
谢谢
请注意,访问的所有路径都可以通过用户accout读取
在您的测试设置中,您可以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)