Python osx上的tempfile.mkdtemp()差异?

Python osx上的tempfile.mkdtemp()差异?,python,macos,Python,Macos,以下单元测试通过了所有linux/python和windows/python组合: import os import tempfile from contextlib import contextmanager def test_cd_to_tempdir(): initial_cwd = os.getcwd() abspath_tmpdir = tempfile.mkdtemp() try: assert os.path.isabs(abspath_t

以下单元测试通过了所有linux/python和windows/python组合:

import os
import tempfile
from contextlib import contextmanager

def test_cd_to_tempdir():
    initial_cwd = os.getcwd()
    abspath_tmpdir = tempfile.mkdtemp()
    try:
        assert os.path.isabs(abspath_tmpdir)
        os.chdir(abspath_tmpdir)
        curdir = os.getcwd()
        assert initial_cwd != curdir
        assert curdir == abspath_tmpdir
    finally:
        os.chdir(initial_cwd)      # must exit directory..
        os.rmdir(abspath_tmpdir)   # ..before it can be removed
在osx上出现故障(仅测试3.7.4),故障如下:

        try:
            assert os.path.isabs(abspath_tmpdir)
            os.chdir(abspath_tmpdir)
            curdir = os.getcwd()
            assert initial_cwd != curdir
>           assert curdir == abspath_tmpdir
E           AssertionError: assert '/private/var...T/tmpoz7eo_yj' == '/var/folders/...T/tmpoz7eo_yj'
E             - /private/var/folders/17/5mc7816d3mndxjqgplq6057w0000gn/T/tmpoz7eo_yj
E             ? --------
E             + /var/folders/17/5mc7816d3mndxjqgplq6057w0000gn/T/tmpoz7eo_yj
我不是mac电脑用户,所以我真的不知道
/private/
前缀是如何工作的(一些谷歌搜索让我相信它是windows
%APPDATA%
的mac等价物)

有没有一种方法可以跨平台编写此代码


(如果有人感兴趣的话,travis的运行时间为。

/tmp
是macOS上
/private/tmp
的符号链接(对于
/var
)。参见跨站点问答

因此,要跨平台编写,您只需解析链接:

assert os.path.realpath(curdir) == os.path.realpath(abspath_tmpdir)