1

機能テストでログインのテストに問題があります。モデル mommy を使用してパスワード付きのユーザー コール Megan を作成していますが、情報が送信されると「正しいユーザー名とパスワードを入力してください」という HTML ページでエラーが発生するため、テストはまだ合格しません。フィールドでは大文字と小文字が区別される場合があります。」したがって、テストユーザーが作成されていないか、そのようなものであると思われます。

機能テスト:

from django.test import LiveServerTestCase
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from model_mommy import mommy
from django.contrib.auth.models import User


class NewUserTest(LiveServerTestCase):

    def setUp(self):
        self.user = mommy.make('User', 
        username='Megan',
        password = 'password',
        is_active = True)

        self.browser = webdriver.Firefox()
        self.browser.implicitly_wait(15)

    def tearDown(self):
        self.browser.quit()

    def test_user_can_start_a_new_movement(self):
        #some code
        self.browser.get(self.live_server_url)
        self.assertIn('P2', self.browser.title)

        #Megan first logs in 
        login_link = self.browser.find_element_by_link_text('Log In')
        login_link.click()
        #Megan then puts in her user information
        username = self.browser.find_element_by_id('id_username')
        password = self.browser.find_element_by_id('id_password')
        submit = self.browser.find_element_by_id('id_submit')
        username.send_keys('Megan')
        password.send_keys('password')
        submit.click()

login.html

{% extends 'base.html' %}

{% block body_block %}

<form action="/accounts/login/" method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="submit" id='id_submit'>

</form>

{% endblock %}

users.urls.py:

from django.conf.urls import url, patterns
from django.contrib.auth.views import login, logout

from movements import views 

urlpatterns = [
    url(r'^login/', login,
 {'template_name': 'login.html'}, name='login'),
]
4

2 に答える 2

3

mommy.makeパスワードをハッシュしていないため、現時点ではコードが機能していないと思います。この場合、使用する利点は見当たらないので、代わりmommyに通常の方法を使用しても問題ないはずです。create_user

self.user = User.objects.create_user 
    username='Megan',
    email='megan@example.com',
    password = 'password',
)

これにより、パスワードが適切にハッシュされます。

モデル mommy を引き続き使用して、他のモデルへの外部キーを作成する場合はset_password、パスワードを正しくハッシュするために呼び出すことができます。回答でこれを提案してくれたmislavcimpersakに感謝します。

    self.user = mommy.make('User', 
    username='Megan',
    is_active = True)
    self.user.set_password('password')
    self.save()
于 2015-11-10T17:07:53.447 に答える