gpt4 book ai didi

python - 从 Python 测试用例中更改 "settings"值的最佳方法?

转载 作者:太空狗 更新时间:2023-10-30 02:00:23 24 4
gpt4 key购买 nike

我第一次用 Python 为 Django 应用程序编写单元测试。我遇到了一个问题。为了测试特定的功能,我需要更改其中一个应用程序设置的值。这是我的第一次尝试:

def test_in_list(self):
mango.settings.META_LISTS = ('tags',)
tags = Document(filepath).meta['tags']
self.assertEqual(tags, [u'Markdown', u'Django', u'Mango'])

我想做的是更改 META_LISTS 的值,以便在创建 Document 对象时使用新值。相关的导入是...

# tests.py
from mango.models import Document
import mango.settings

# models.py
from mango.settings import *

如果我没理解错的话,因为 models.py 已经从 mango.settings 导入了名称,改变了 META_LISTS 的值在 mango.settings 中不会改变 mango.models 中的 META_LISTS 的值。

有可能——甚至可能——我以完全错误的方式处理这件事。从测试用例中更改此类“设置”值的正确方法是什么?

编辑:我没有提到文件 models.py 包含 vanilla Python 类而不是 Django 模型。我当然需要重命名这个文件!

最佳答案

在 models.py 中,使用 import mango.settings。然后,您可以像设置任何其他代码一样在测试代码中设置一个变量:

mango.settings.foo = 'bar'

一个模块是一个单例。您可以从代码中的任何位置更改其命名空间中的值。

但是,如果您使用 from mango.settings import *,这将不起作用,因为该表达式会将模块中的值复制到当前命名空间中。

关于python - 从 Python 测试用例中更改 "settings"值的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3830000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com