首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pytest-django:模拟settings.DEBUG

pytest-django:模拟settings.DEBUG
EN

Stack Overflow用户
提问于 2021-03-11 16:40:44
回答 2查看 100关注 0票数 0

为了使手动测试变得容易,我希望在显示登录页面时创建用户。

代码语言:javascript
复制
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()

我的测试:

代码语言:javascript
复制
@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

EN

回答 2

Stack Overflow用户

发布于 2021-03-11 17:31:14

您需要使用override_settings装饰器:

代码语言:javascript
复制
@override_settings(DEBUG=False)
@pytest.mark.django_db
def test_create_users_prod(settings):
    LalaLoginView.create_users()
    assert not User.objects.all().exists()
票数 2
EN

Stack Overflow用户

发布于 2021-03-13 00:09:58

问题出在键盘和椅子之间:-)

下面的代码可以工作:

代码语言:javascript
复制
@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“设置”起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66578996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档