4
我正在嘗試爲使用Django REST框架編寫的REST API編寫一些功能測試。這個框架並不是特定的,因爲它主要是一般的Django的東西。爲Django RESTful API編寫功能測試
這就是我想要做的
- 在測試類
- 請求用戶使用測試客戶端
測試從API令牌的setUp
方法創建一個用戶.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="[email protected]")
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中應該如何執行像這樣的功能測試,在運行測試之前需要創建數據?
嗯,這是尷尬,謝謝! –