为了使手动测试变得容易,我希望在显示登录页面时创建用户。
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()中,DEBUG为“真”。
如何用pytest-django模拟settings.DEBUG?
发布于 2021-03-11 17:31:14
您需要使用override_settings装饰器:
@override_settings(DEBUG=False)
@pytest.mark.django_db
def test_create_users_prod(settings):
LalaLoginView.create_users()
assert not User.objects.all().exists()发布于 2021-03-13 00:09:58
问题出在键盘和椅子之间:-)
下面的代码可以工作:
@pytest.mark.django_db
def test_create_users_prod(settings):
settings.DEBUG=False
LalaLoginView.create_users()
assert not User.objects.all().exists()但在我的生产代码中,我从mysite导入了settings。
在将其更改为from django.conf import settings之后,pytest fixture“设置”起作用了。
https://stackoverflow.com/questions/66578996
复制相似问题