用于 Django 登录的模拟单元测试

Unittest with mock for django login

我正在为 Django 上的登录编写单元测试。我对 get_user() 有严重的问题。我只是不知道如何在测试中通过这个功能。我无法模拟,也无法替代值。我认为我这样做是错误的。但是我不知道怎么做才对!

拜托,我需要帮助!

def user_login(request):
    if request.method == 'POST':
        form = UserLoginForm(data=request.POST)
        if form.is_valid():
            user = form.get_user()
            login(request, user)
            return redirect('/')

我需要对这个简单的函数进行单元测试。

这是登录视图的一个非常基本的测试,它断言当有人登录时返回 200 响应。我认为不需要模拟。为了完整起见,您很可能希望为不正确的 username/password 和停用的帐户

添加测试
import unittest
from django.test import Client
from django.contrib.auth import get_user_model


class SimpleTest(unittest.TestCase):
    def setUp(self):
        self.client = Client()
        self.username = 'foo'
        self.password = 'bar'
        self.user = get_user_model().objects.create_user(self.username, password=self.password)

    def test_login(self):
        response = c.post('/login/', {'username': self.username, 'password': self.password})
        self.assertEqual(response.status_code, 200)