我需要创建一个博客文章应用程序,在其中我会测试所有测试用例。我需要一个用户,可以保持登录在整个测试阶段,以便我可以使用相同的登录用户在博客和张贴和更新后的API,但我无法这样做
def test_login(client, user_data):
# with unittest.mock.patch('django.contrib.auth.authenticate') as mock_authenticate:
# mock_authenticate.return_value = authenticate(
# request=client.post(reverse('login'), user_data, format='json'),
# backend='django.contrib.auth.backends.ModelBackend'
# )
with unittest.mock.patch('django.contrib.auth.authenticate') as mock_authenticate:
user = CustomUser.objects.create_user(**user_data)
mock_authenticate.return_value = user
response = client.post(reverse('login'), user_data, format="json")
assert response.sstatus_code == 200
这是我的登录API,我希望此用户在所有API中登录,而不使用会话
2条答案
按热度按时间vhmi4jdf1#
要管理Django项目中的测试错误,您可以按照以下步骤操作:
1.创建测试数据库:您应该为运行测试创建一个单独的测试数据库,这是为了避免干扰开发数据库。
1.使用Django的测试工具:Django提供了几个测试工具,包括
TestCase
类和client
对象',它允许你模拟对应用程序的请求。1.使用
assert
语句:可以使用assert
语句检查代码是否按预期工作。例如,在上面的代码中,可以使用assert
response.status_code == 200
确保登录请求返回成功状态代码。1.模拟外部依赖项:在测试中,您可能需要模拟代码所依赖的外部依赖项,例如身份验证后端。您可以使用
unittest.mock
库创建模拟对象来模拟这些依赖项。关于你的具体问题,如果你想让用户不使用会话就能登录所有API,你可以使用基于令牌的认证。Django提供了一个内置的认证框架
django-rest-framework
,其中包括基于令牌的认证。你可以在登录过程中为用户创建一个令牌,然后使用该令牌来认证对API的后续请求。这样,您不需要依赖会话来维护用户的登录状态。vaj7vani2#
应用程序/tests.py
您可以使用
force_authenticate
方法获取特定用户的身份验证。