pytest 的 monkeypatch
模块提供了一个setenv
函数,它将设置环境变量名称为值。
为什么monkeypatch
提供这个?听起来和os.putenv
一样?它提供了 prepend
参数作为一种便利,但这似乎是一个用于设置环境变量的新函数的弱理由。
最佳答案
这是关于拆除测试在环境中所做的更改。如果你只使用os.putenv
,或者直接修改os.environ
,那么你的修改即使在测试结束后也会保留。这意味着下一个运行的测试也将应用更改!由于测试不一定按顺序进行,这意味着您不再有可重复且可靠的测试执行。
单个测试更改某些全局可变状态是不可取的,因此当您需要在测试期间配置环境变量时,可以使用上下文管理器或提供的 fixture 。
关于python - 为什么使用 monkeypatch.setenv 而不是 os.putenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38410878/