簡體   English   中英

使用Model Mommy測試登錄

[英]Testing Login with Model Mommy

我在功能測試中測試登錄時遇到問題。 我正在使用模型媽媽創建一個使用密碼的用戶調用梅根,但是我的測試仍然沒有通過,因為在發送信息時,它拋出了錯誤,並且在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'),
]

如果您仍然堅持使用模型媽媽:

class NewUserTest(LiveServerTestCase):
    def setUp(self):
        self.user = mommy.make('User', 
            username='Megan',
            is_active = True)
        self.user.set_password('password')
        self.user.save()

我相信您的代碼目前無法正常工作,因為mommy.make不會對密碼進行哈希處理。 我看不到在這種情況下使用mommy任何優勢,因此可以改用常規的create_user方法。

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

這將確保正確地對密碼進行哈希處理。

如果仍要使用模型媽媽來創建其他模型的外鍵,則可以調用set_password正確地對密碼進行哈希處理。 感謝mislavcimpersak在回答中提出的建議。

    self.user = mommy.make('User', 
    username='Megan',
    is_active = True)
    self.user.set_password('password')
    self.save()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM