修补 python 中作为另一个名称导入的配置文件
Patch a config file imported as another name in python
我正在尝试修补 Django 应用程序中使用的配置文件,但鉴于我们导入配置的方式,我无法理解如何操作。我不认为它是 Django 的事实在这里有多大的相关性,但它部分地驱动了这个文件结构。
app/views.py
from . import config as APP_CONFIG
...later on in some function...
retry_count = APP_CONFIG.MAX_NUMBER_RETRIES
app/config.py
MAX_NUMBER_RETRIES = 1
如何正确修补此配置设置?
我在我的测试函数中尝试了各种 @patch('app.views.CONFIG.MAX_NUMBER_RETRIES', 1)
或 @patch('app.config.MAX_NUMBER_RETRIES', 1)
都无济于事(我使用 pytest)。
这应该有效:
@patch('app.views.APP_CONFIG.MAX_NUMBER_RETRIES', 1)
我尝试了一个小例子(没有 Django),它按预期工作。这可能不是 pytest,而是 mock 相关。查看文档:Where to patch .
我正在尝试修补 Django 应用程序中使用的配置文件,但鉴于我们导入配置的方式,我无法理解如何操作。我不认为它是 Django 的事实在这里有多大的相关性,但它部分地驱动了这个文件结构。
app/views.py
from . import config as APP_CONFIG
...later on in some function...
retry_count = APP_CONFIG.MAX_NUMBER_RETRIES
app/config.py
MAX_NUMBER_RETRIES = 1
如何正确修补此配置设置?
我在我的测试函数中尝试了各种 @patch('app.views.CONFIG.MAX_NUMBER_RETRIES', 1)
或 @patch('app.config.MAX_NUMBER_RETRIES', 1)
都无济于事(我使用 pytest)。
这应该有效:
@patch('app.views.APP_CONFIG.MAX_NUMBER_RETRIES', 1)
我尝试了一个小例子(没有 Django),它按预期工作。这可能不是 pytest,而是 mock 相关。查看文档:Where to patch .