如何使用pytest测试文件不存在?

问题描述

我不是一个新的开发者,但我是 Python 的新手。

我正在修改一个现有例程,用于检查环境变量中的令牌。如果令牌在环境中不存在,我正在修改它以查看 .netrc 并且我想测试它,但我不知道如何模拟丢失的文件代码如下所示。

def _get_path() -> str:;
    """Get personal access token."""
    pat = os.environ["MY_TOKEN"]
    if not pat:
        try:
            pat = netrc.netrc().authenticators('my.site')[2]
        except netrc.NetrcParseError as ne:
            print(f"Parse error in ${ne.filename} at ${ne.lineno}: ${ne.msg})
        else:
            raise ValueError('No PAT found')
     return pat

认查找 $HOME/.netrc,它存在于我的环境中,但可能不存在于其他开发者环境中。它肯定不会存在于测试环境中。

我很确定我可以弄清楚如何测试错误.netrc,但我似乎无法弄清楚如何使用 pytest、mock 或 mockito 来测试丢失的 $HOME/.netrc不管真实的存在与否。

我该怎么做?

编辑:澄清一下,测试环境可能有 MY_TOKEN 变量集和/或可能有 $HOME/.netrc ...我如何测试 $HOME/.netrc 的不存在,无论它是否存在是否存在于测试环境中?

解决方法

这听起来是使用 if not os.path.exists(filepath):

的好时机