Django测试客户端未登录

mdw7326

我正在尝试使用其内置的登录功能登录测试客户端。我正在尝试对测试视图进行单元测试,并且需要登录以测试其中的一些视图。我已经尝试这样做太长时间了,需要帮助。一些注意事项:

create_user()确实创建了一个有效的用户,该用户已在其他位置使用。

从我对client.login()的了解来看,它返回一个布尔值,当我运行测试时,失败是“ False is not True”,因此这似乎是正确的。

我成功登录的唯一方法是调用client.post(“ / my / login / url”,{dict中的用户名和密码。})但是,由于某些原因,它不能在我所有的测试用例中保持登录状态我觉得很奇怪。

def setUp(self):
    """
    Initializes the test client and logs it in.
    """
    self.user = create_user()
    self.logged_in = self.client.login(username=self.user.username, password=self.user.password)

def test_valid(self):
    self.assertTrue(self.logged_in)

我将其更改为以下内容:

def setUp(self):
    """
    Initializes the test client and logs it in.
    """
    self.password = "password"
    self.user = create_user(password=self.password)
    self.logged_in = self.client.login(username=self.user.username, password=self.password)

它仍然无法登录。

创建用户位于“静态”类中,并且将user_count初始化为0,该函数如下:

def create_user(username=None, password=None, email=None, is_superuser=False):
    if username is None:
        username = "user%d" % Static.user_count
        while User.objects.filter(username=username).count() != 0:
            Static.user_count += 1
            username = "user%d" % Static.user_count
    if password is None:
        password = "password"
    if email is None:
        email="user%[email protected]" % Static.user_count

    Static.user_count += 1
    user = User.objects.create(username=username, password=password,   is_superuser=is_superuser)
虚假的

您不能直接访问密码。password属性已加密。(请参阅Django中的密码管理。)

例如,此处是密码输出示例。

>>> user = User.objects.create_user(username='asdf', email='[email protected]', password='xxxx')
>>> user.password
'sha1$166e7$4028738f0c0df0e7ec3cec06843c35d2b5a1aae8'

如您所见,user.password不是xxxx我给的。

我将修改create_user为接受可选的password参数。并将密码同时传递给create_userclient.login,如下所示:

def setUp(self):
    """
    Initializes the test client and logs it in.
    """
    password = 'secret'
    self.user = create_user(password=password)
    self.logged_in = self.client.login(username=self.user.username, password=password)

更新

create_user应该使用User.objects.create_user而不是User.objects.create并且应该返回创建的用户对象:

def create_user(username=None, password=None, email=None, is_superuser=False):
    if username is None:
        username = "user%d" % Static.user_count
        while User.objects.filter(username=username).count() != 0:
            Static.user_count += 1
            username = "user%d" % Static.user_count
    if password is None:
        password = "password"
    if email is None:
        email="user%[email protected]" % Static.user_count

    Static.user_count += 1
    user = User.objects.create_user(username=username, password=password)
    #                   ^^^^^^^^^^^
    user.is_superuser = is_superuser
    user.save()
    return user # <---

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django测试客户端登录后返回匿名用户

来自分类Dev

Django测试客户端:登录不起作用

来自分类Dev

Django 测试客户端发布数据

来自分类Dev

成功登录后SSH客户端未显示提示

来自分类Dev

Django的测试客户端返回错误编码的URL

来自分类Dev

Django测试客户端不处理异常?

来自分类Dev

Django-由于csrf,测试客户端收到403

来自分类Dev

在setUpClass中访问Django测试客户端

来自分类Dev

Django教程错误:设置测试客户端

来自分类Dev

Django测试客户端发布数据为空

来自分类Dev

Django的测试客户端返回错误编码的URL

来自分类Dev

客户端补丁在 django 测试中给出 400 错误

来自分类Dev

Django 测试客户端发布请求无法重定向

来自分类Dev

Rikulo安全客户端登录

来自分类Dev

ajax登录到网站客户端

来自分类Dev

客户端登录是否安全?

来自分类Dev

IdentityServer 和客户端外部登录

来自分类Dev

MVC客户端未重定向到IdentityServer4登录UI

来自分类Dev

如何测试Java SIP客户端?

来自分类Dev

Python测试客户端是否存在

来自分类Dev

JUnit测试Spymemcached客户端

来自分类Dev

测试客户端服务器

来自分类Dev

Python测试客户端是否存在

来自分类Dev

如何测试SOAP(wsdl)客户端?

来自分类Dev

涉及多个客户端的 Gatling 测试

来自分类Dev

Apollo客户端未解析UserInputError

来自分类Dev

多个客户端未与RServe连接

来自分类Dev

SignalR客户端未连接

来自分类Dev

Ubuntu 12.04 LTSP Fat客户端自动登录,没有自动登录客户端