【问题标题】:How to simulate a user with certain permissions using WebTest如何使用 WebTest 模拟具有特定权限的用户
【发布时间】:2012-11-11 12:08:13
【问题描述】:

我正在测试我的视图并想模拟具有某些权限的登录用户。

我知道在 django-webtest 中我可以像这样模拟登录用户:

self.app.get(reverse('profile'), user='bob')

我也可以为这个用户传入一个组吗?还是权限列表? 如果我将在 setUp 中创建一个用户并为他分配一个组,我可以通过像这样传递他的用户名来模拟他登录:

self.app.get(reverse('profile'), user='user_with_certain_permissions')

还是我需要先让他登录?

【问题讨论】:

    标签: django python-2.7 webtest


    【解决方案1】:

    是的,这应该可以。您也可以传递用户实例而不是用户名:

    self.app.get(reverse("profile"), self.user_with_certain_permissions)
    

    【讨论】:

    • 谢谢。让我有点困惑的是,'bob' 不是在 setUp 中创建的。没有具有此名称的用户,但它仍然有效。这让我想知道我是否可以以相同的方式模拟具有权限的用户。
    • django-webtest 文档中的示例假定用户来自固定装置 (fixtures = ['users', 'blog_posts'])。
    • 嗯,就是这样。就我而言,没有用户'bob',但它仍然有效。我进行了测试以获取具有 login_required 装饰器的页面,并且它有效。我在没有提供用户的情况下运行了相同的测试,实际上我被重定向到了登录页面。我也知道我没有任何其他用户登录,b.c 这本身就是一个测试,所以执行了拆卸并且新的设置是有序的。除非 django-webtest 加载它自己的fixture...
    • django-webtest 使用 django 的 RemoteUserBackend 身份验证后端的子类,RemoteUserBackend 默认为未知用户创建 User 实例。这确实违反直觉。
    • 哦,我明白了。这当然解释了我得到的这种行为。谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多