python 在pytest中使用monkeypatch覆盖环境变量

ymdaylpp  于 2022-12-21  发布在  Python
关注(0)|答案(1)|浏览(118)

目前,我有一个文件包含

DATABASE_URL = os.environ.get("DATABASE_URL")

engine = create_async_engine(DATABASE_URL, echo=False, future=True)

现在,我想在pytest中用monkeypatch覆盖DATABASE_URL,但遗憾的是,无论我尝试什么,它都存储为“旧”值。
你知道我该怎么做吗?

rsaldnfx

rsaldnfx1#

我认为在导入模块之前简单地修改环境而不是monkeypatching会是一个更好的解决方案:

import os

os.environ['DATABASE_URL'] = 'some other value'

# os.environ.get("DATABASE_URL") will now return the new value
import mymodule

Monkeypatching实际上是为了修改 * 行为 *(即函数),而不是 * 环境 *。

相关问题