python - 为什么使用 monkeypatch.setenv 而不是 os.putenv

标签 python environment-variables pytest monkeypatching

pytest 的 monkeypatch模块提供了一个setenv 函数,它将设置环境变量名称为值。 为什么monkeypatch 提供这个?听起来和os.putenv一样?它提供了 prepend 参数作为一种便利,但这似乎是一个用于设置环境变量的新函数的弱理由。

最佳答案

这是关于拆除测试在环境中所做的更改。如果你只使用os.putenv,或者直接修改os.environ,那么你的修改即使在测试结束后也会保留。这意味着下一个运行的测试也将应用更改!由于测试不一定按顺序进行,这意味着您不再有可重复且可靠的测试执行。

单个测试更改某些全局可变状态是不可取的,因此当您需要在测试期间配置环境变量时,可以使用上下文管理器或提供的 fixture 。

关于python - 为什么使用 monkeypatch.setenv 而不是 os.putenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38410878/

相关文章:

pytest - 作为用户级配置,如何使 pytest 快速失败?

python - 如何将 pytest 与子进程一起使用?

Python 多线程时的诅咒

python - 替换大型 txt 文件中的字符串时如何绕过内存错误?

python - 如何在 CloudFoundry 中添加 cron 作业

python - 如何让 py.test 测试接受交互式输入?

python - Plone:拦截工作流转换并以编程方式将其更改为另一个

ruby-on-rails - 用于开发环境的 Ruby on Rails 环境变量

environment-variables - 上传到 Zeit/Now 时客户端中暴露的 Nuxt 环境变量

hadoop - 如何设置映射器的系统环境?