gpt4 book ai didi

django - 为 Django RESTful API 编写功能测试

转载 作者:行者123 更新时间:2023-12-02 11:44:42 25 4
gpt4 key购买 nike

我正在尝试为使用 Django REST Framework 编写的 REST API 编写一些功能测试。不过,它并不是特定于该框架的,因为它主要是通用的 Django 东西。

这就是我想做的

  1. 在测试类的setUp方法中创建用户
  2. 使用测试客户端从 API 请求用户 token

测试.py

from django.test import LiveServerTestCase

from django.contrib.auth.models import User
from django.test.client import Client
from rest_framework.authtoken.models import Token

class TokenAuthentication(LiveServerTestCase):
def setUp(self):
user = User.objects.create(username='foo', password='password', email="foo@example.com")
user.save()
self.c = Client()

def test_get_auth_token(self):
user = User.objects.get(username="foo")
print user # this outputs foo
print Token.objects.get(user_id = user.pk) # this outputs a normal looking token
response = self.c.post("/api-token-auth/", {'username': 'foo', 'password': 'password'})
print response.status_code # this outputs 400
self.assertEqual(response.status_code, 200, "User couldn't log in")

当我运行测试时,它返回状态 400 而不是 200,因此用户未经过身份验证。如果我输入数据库中已有用户的凭据,它就会通过。因此,我假设在测试类中创建的记录只能在它自己的方法中访问,这可能是因为它是为单元测试而设计的。但我使用数据库中的数据来执行测试,如果数据发生变化,就会失败。

像这样的功能测试,在运行测试之前需要创建数据,应该如何在 Django 中执行?

最佳答案

您创建的用户不正确。 User.objects.create 以纯文本形式设置密码,而不是通过哈希机制。您应该使用 User.objects.create_user这将正确设置密码,以便您可以使用用户名和密码进行身份验证。

关于django - 为 Django RESTful API 编写功能测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17992511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com