0

我是django的新手。在我的第一個django應用程序中,我正在測試我的一個視圖來檢查登錄。這是我的看法:Django測試沒有連接到數據庫

from testprjct.testapp.forms import LoginForm_form 
from django.contrib import auth 

def check_login(request): 

if request.method == 'POST': 
    form = LoginForm_form(request.POST) 
    if request.POST and form.is_valid(): 
     username = request.POST.get('username', '') 
     password = request.POST.get('password', '') 

     # I am hard-coding the credentials here just for testing 
     user = auth.authenticate(username = 'test123', password = 'qwerty') 
     if user is not None and user.is_active: 

      auth.login(request, user) 
      ..... 

這個視圖工作正常,當我運行服務器,並嘗試從前端登錄。但在執行此視圖的測試用例時失敗。這是我對這一觀點的測試代碼:

from testprjct.testapp.models import loginform 

class ViewTests(TestCase): 
def setUp(self): 
    loginform.objects.create(username='test123', password='qwerty') 

def test_login(self): 
    response = self.client.get('/login/') 
    self.assertEqual(response.status_code, 200) 

    response = self.client.post('/login/', {"username": "test123", "password": "qwerty"}) 
    print response 
    self.assertEqual(response.status_code, 302) 

這總是與200 STATUS_CODE(不重定向到成功頁面),便只有登錄信息是無效的消息返回。

我在測試登錄頁面中的忘記密碼鏈接時,同樣是這個問題。當提供有效的電子郵件ID時,它可以從前端正常工作。但是從我的測試案例來看,它總是讓我回到電子郵件ID沒有關聯的用戶帳戶的錯誤消息,即使我提供了與前端相同的電子郵件ID。

有什麼建議嗎?我已經花了很多時間在這個已經試圖找出問題。

回答

0

Django建立了一個新的測試數據庫,所以它不會訪問您現有的數據。您需要在測試本身或setUp方法中創建所需的數據。

+0

謝謝你的回覆。我在setUp方法中創建了該對象,但仍然沒有獲得用戶身份驗證。我在登錄信息無效的響應中收到相同的錯誤消息。我已經在我原來的問題編輯了上面的測試用例 – user2376226 2013-05-13 15:14:04

+0

創建測試數據,我做對了嗎? – user2376226 2013-05-13 21:37:31