2015-02-12 60 views
0

我想編寫一個測試,用於測試更改應用程序中的密碼。我使用django-allauth。爲了測試,我使用django-WebTest。使用django-webtest進行單元測試時不存在任何表單

當我運行我的代碼,我得到的消息:

FAILED (errors=1) 
Destroying test database for alias 'default'... 
[email protected]:~/myapp$ python manage.py test users 
Creating test database for alias 'default'... 
.E 
====================================================================== 
ERROR: test_password_change_use_template (myapp.users.tests.ChangePasswordTest) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/home/mark/myapp/users/tests.py", line 16, in test_password_change_use_template 
    password_change.form['oldpassword'] = "test123" 
    File "/home/mark/.virtualenvs/urlop/local/lib/python2.7/site-packages/webtest/response.py", line 56, in form 
    "You used response.form, but no forms exist") 
TypeError: You used response.form, but no forms exist 

我的代碼:

from django_webtest import WebTest 
from django_dynamic_fixture import G 
from users.models import User 
from django.core.urlresolvers import reverse 

class ChangePasswordTest(WebTest): 
    def setUp(self): 
     self.user = G(User) 

    def test_password_change_code(self): 
     password_change = self.app.get(reverse('account_change_password'), user=self.user) 

    def test_password_change_use_template(self): 
     password_change = self.app.get(reverse('account_change_password'), user=self.user) 
     password_change.form['oldpassword'] = "test123" 
     password_change.form['password1'] = "test456" 
     password_change.form['password2'] = "test456" 
     password_change.form.submit() 
     self.assertRedirects(password_change, reverse('change_password')) 

回答

0

WebTest的測試呈現的內容。 HTML中沒有找到任何表單(可能表單標記不正確或缺失)。

如果它在您的手動測試中工作。你可以嘗試打印迴應,看看有什麼不同:

def test_password_change_use_template(self): 
    response = self.app.get(reverse('account_change_password'), user=self.user) 
    print response