MacOS下os.path.abspath()在测试与业务代码中返回路径不一致问题
MacOS下os.path.abspath()返回路径不一致问题及疑惑
问题场景
在单元测试和被测代码中调用os.path.abspath()时,针对同一文件得到了不同结果,环境为Python 3.9.13 + MacOS Monterey 12.6.2。
被测代码
abspath = os.path.abspath(filepath)
测试代码
测试时会将文件复制到临时测试目录后执行被测代码:
self.test_data = os.path.dirname(test_data.__file__) self.test_dir = tempfile.mkdtemp(prefix="test_") shutil.copy( os.path.join(self.test_data, "thefile.txt"), os.path.join(self.test_dir, "thefile.txt"), )
测试失败现象
被测代码生成的文件路径为:/private/var/folders/1w/k19bxrj1463_4j5m8xv6_6cc0000gp/T/test_z66pgwj_/thefile.txt
但测试预期路径为:/var/folders/1w/k19bxrj1463_4j5m8xv6_6cc0000gp/T/test_z66pgwj_/thefile.txt
且在测试中直接调用os.path.abspath(os.path.join(self.test_dir, "thefile.txt"))返回的路径不带/private前缀。
解决后的疑惑
问题已解决,但仍有疑问:
os.path.abspath(os.path.join(self.test_dir, "thefile.txt"))返回:/var/folders/1w/k19bxrj1463_4j5m8xv6_6cc0000gp/T/test_z66pgwj_/thefile.txtos.path.abspath("thefile.txt")返回:/private/var/folders/1w/k19bxrj1463_4j5m8xv6_6cc0000gp/T/test_z66pgwj_/thefile.txt
内容的提问来源于stack exchange,提问作者attamatti
相关产品推荐
相关产品推荐

