pytest django:Mock settings.DEBUG
为了简化手动测试,我希望在显示登录页面时创建用户pytest django:Mock settings.DEBUG,django,pytest,pytest-django,Django,Pytest,Pytest Django,为了简化手动测试,我希望在显示登录页面时创建用户 class LalaLoginView(LoginView): def get(self, request, *args, **kwargs): self.create_users() return super().get(request, *args, **kwargs) @classmethod def create_users(cls): if not setting
class LalaLoginView(LoginView):
def get(self, request, *args, **kwargs):
self.create_users()
return super().get(request, *args, **kwargs)
@classmethod
def create_users(cls):
if not settings.DEBUG:
return
admin = User.objects.update_or_create(username='admin', defaults=dict(
is_superuser=True, is_staff=True))[0]
admin.set_password('admin')
admin.save()
我的测试:
@pytest.mark.django_db
def test_create_users_prod(settings):
settings.DEBUG=False
LalaLoginView.create_users()
assert not User.objects.all().exists()
但是模仿settings.DEBUG
不起作用。在create_users()
中,调试为“True”
如何模拟
设置。使用pytest django调试?您需要使用覆盖\u设置
装饰器:
@override_settings(DEBUG=False)
@pytest.mark.django_db
def test_create_users_prod(settings):
LalaLoginView.create_users()
assert not User.objects.all().exists()
问题出在键盘和椅子之间:-)
此代码确实有效:
@pytest.mark.django_db
def test_create_users_prod(settings):
settings.DEBUG=False
LalaLoginView.create_users()
assert not User.objects.all().exists()
但是在我的生产代码中,我从mysite导入了设置
在将其从django.conf导入设置更改为后,pytest夹具“设置”起作用