为什么使用 monkeypatch.setenv 而不是 os.putenv
Why use monkeypatch.setenv instead of os.putenv
pytest 的 monkeypatch
module provides a setenv
function which will Set environment variable name to value.
Why does monkeypatch
provide this? It sounds the same as os.putenv
?它提供 prepend
参数是为了方便,但这似乎是一个用于设置环境变量的新函数的弱理由。
这是关于拆除测试在环境中所做的更改。如果你只使用os.putenv
,或者直接修改os.environ
,那么你的修改即使在测试结束后也会保留。这意味着下一个运行的测试也将应用更改!由于测试不一定是有序的,这意味着您不再有可重复和可靠的测试执行。
单个测试总是不希望能够更改某些全局可变状态,因此如果您需要修改环境变量,请使用上下文管理器或使用提供的固定装置。
pytest 的 monkeypatch
module provides a setenv
function which will Set environment variable name to value.
Why does monkeypatch
provide this? It sounds the same as os.putenv
?它提供 prepend
参数是为了方便,但这似乎是一个用于设置环境变量的新函数的弱理由。
这是关于拆除测试在环境中所做的更改。如果你只使用os.putenv
,或者直接修改os.environ
,那么你的修改即使在测试结束后也会保留。这意味着下一个运行的测试也将应用更改!由于测试不一定是有序的,这意味着您不再有可重复和可靠的测试执行。
单个测试总是不希望能够更改某些全局可变状态,因此如果您需要修改环境变量,请使用上下文管理器或使用提供的固定装置。