让我们说模块a
代码:
from django.conf import settings
print settings.BASE_URL # prints http://example.com
在tests.py
我想嘲笑BASE_URL
到http://localhost
我尝试了以下内容:
with mock.patch('django.conf.settings.BASE_URL', 'http://localhost'):
pass
with mock.patch('a.settings.BASE_URL', 'http://localhost'):
pass
from a import settings
with mock.patch.object(settings, 'BASE_URL', 'http://localhost'):
pass
import a
with mock.patch.object(a.settings, 'BASE_URL', 'http://localhost'):
pass
以上都没有。
答案 0 :(得分:5)
尝试使用内置管理器设置()内置django。
with self.settings(BASE_URL='http://localhost'):
# perform your test
https://docs.djangoproject.com/en/dev/topics/testing/tools/#django.test.SimpleTestCase.settings
答案 1 :(得分:1)
您还可以在单个测试函数或整个测试类上使用以下修饰符。
@override_settings(BASE_URL='http://localhost')