Django REST Framework を使用して作成された REST API の機能テストを作成しようとしています。ただし、ほとんどが一般的な Django のものであるため、そのフレームワークに固有のものではありません。
これが私がやりたいことです
setUp
テストクラスのメソッドでユーザーを作成する- テスト クライアントを使用して API からユーザー トークンをリクエストする
tests.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")
テストを実行すると、ステータス 200 ではなく 400 が返されるため、ユーザーは認証されませんでした。データベースに既にあるユーザーの資格情報を入力すると、それは通過します。したがって、テストクラスで作成されたレコードは、それ自体のメソッド内でのみアクセスできると思います。これは、おそらく単体テスト用に設計されているためです。しかし、データベースのデータを使用してテストを実行すると、データが変更されると失敗します。
テストを実行する前にデータを作成する必要があるこのような機能テストは、Django でどのように実行する必要がありますか?