2013-07-02 6 views
5

पर सहेजते हैं इस पर मेरा दिमाग बिल्कुल खो रहा है। मैं यह नहीं समझ सकता कि यह क्यों हो रहा है। प्रत्येक बार जब मैं यह परीक्षण चलाता हूं, तो ऑब्जेक्ट सामान्य, गैर-परीक्षण डेटाबेस में सहेजा जाता है। हालांकि, परीक्षण के अंत में दोनों दावे विफल हो जाते हैं, कह रहे हैं कि वे डेटाबेस में किसी भी उपयोगकर्ता को नहीं ढूंढ सकते हैं, भले ही परीक्षण के हर बार मुझे स्थानीयहोस्ट पर बनाई गई वस्तुओं को हटाने के लिए व्यवस्थापक में जाना होगा। मैं अपनी सेटिंग्स में SQLITE3 का उपयोग कर रहा हूं, और मैं समझता हूं कि डेटाबेस को मारने के बजाय SQLITE परीक्षण स्मृति में चलाना चाहिए। मैंने खोज की है और खोज की है और वेब पर कोई उपयोगी जानकारी नहीं मिल रही है। यहां परीक्षण फ़ंक्शन है:Django कार्यात्मक LiveServerTestCase - सेलेनियम के साथ फ़ॉर्म जमा करने के बाद, ऑब्जेक्ट गैर-परीक्षण डेटाबेस

import time 
import datetime 

from django.test import TestCase, LiveServerTestCase 
from django.core.urlresolvers import resolve 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from django.contrib.auth.models import User 

from apps.registration.forms import RegistrationForm 

class NewVisitorTest(LiveServerTestCase): 

    def setUp(self): 
     self.browser = webdriver.Firefox() 
     self.browser.implicitly_wait(3) 

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

    def test_registration_process(self): 

     # Goes to registration page 

     self.browser.get('http://localhost:8000/register/') 

     # User can find sign up form 
     registration_form = self.browser.find_element_by_id('id_registration_form') 

     # User can fill out sign up form 
     first_name_input = self.browser.find_element_by_id('id_first_name') 
     first_name_input.send_keys('Jim') 

     last_name_input = self.browser.find_element_by_id('id_last_name') 
     last_name_input.send_keys('Barrow') 

     date = datetime.date.today() 
     date_input = self.browser.find_element_by_id('id_birthday') 
     date_input.send_keys(str(date)) 

     username_input = self.browser.find_element_by_id('id_username') 
     username_input.send_keys('jim_barrow') 

     password_input = self.browser.find_element_by_id('id_password') 
     password_input.send_keys('kittensarecute') 

     password_1_input = self.browser.find_element_by_id('id_password1') 
     password_1_input.send_keys('kittensarecute') 

     email_input = self.browser.find_element_by_id('id_email') 
     email_input.send_keys('[email protected]') 

     # User can submit sign up form 
     registration_form.submit() 

     # User is now registered as a user object 
     users = User.objects.all() 
     self.assertEqual(len(users), 1) 

     # User is now registered as a person object 
     persons = Person.objects.all() 
     self.assertEqual(len(persons), 1) 

if __name__ == '__main__': 
    unittest.main() 

यदि कोई अन्य संदर्भ है जो मैं प्रदान कर सकता हूं, तो मैं आपको खुशी से दिखाऊंगा। यह व्यावहारिक रूप से एक खाली परियोजना है, इसलिए सेटिंग.py में कोई अजीब या असामान्य सेटिंग्स नहीं है जो चीजों को भ्रमित कर सकती है। किसी भी तरह की सहायता का स्वागत किया जाएगा।

+0

परीक्षण प्लेट के रूप में कभी भी SQLLite 3 का उपयोग न करें। यह सभी 58 तरीकों से रविवार में भयानक है। –

+0

@limelights बस मेरी मशीन पर पोस्टग्रेस स्थापित और सेटअप करें और एक ही त्रुटि प्राप्त करें। मैं वास्तव में इस से निराश हो रहा हूँ। –

+0

परीक्षण चलाने के लिए आप किस कमांड का उपयोग कर रहे हैं? – Alasdair

उत्तर

12

the LiveServerTestCase docs के अनुसार, लाइव सर्वर डिफ़ॉल्ट रूप से पोर्ट 8081 पर है। हालांकि आप इसके बजाय पोर्ट 8000 से पृष्ठ ला रहे हैं।

मुझे उम्मीद है कि आप पोर्ट 8000 पर देव सर्वर चला रहे हैं और आपके परीक्षण उससे जुड़ रहे हैं, इसलिए आपकी नई ऑब्जेक्ट गैर-परीक्षण डेटाबेस में दिखाई देती हैं। पृष्ठ को पोर्ट 8081 से पृष्ठ लाने के लिए आपको अपना कोड बदलना होगा।

+0

मैं काम पर हूं और यह एक निजी परियोजना है, इसलिए मैं इस समय इसका परीक्षण नहीं कर सकता, लेकिन ऐसा लगता है कि यह सिर्फ समस्या हो सकती है। मैं वापस आऊंगा और जितनी जल्दी हो सके अपने उत्तर की जांच करूँगा। धन्यवाद। –

+0

मैं ईमानदारी से आपको चुंबन दे सकता हूं। मैं SO पर अपने हर कदम का पालन करना शुरू करने के लिए प्रेरित हूं इसलिए मैं आपकी हर पोस्ट को ऊपर उठा सकता हूं। बस दिखाता है कि मुझे किसी अन्य डिबगिंग करने से पहले दस्तावेज़ीकरण पढ़ना चाहिए। बहुत बहुत धन्यवाद। –

0

त्वरित अपडेट:

Django 1.11 के रूप में, LiveServerTestCase द्वारा सर्वर सेटअप का उपयोग करता है किसी भी मुक्त बंदरगाह स्थानीय होस्ट द्वारा आवंटित, नहीं बस 8081.

आप का उपयोग को लाइव सर्वर URL और बंदरगाह का उपयोग कर सकते self.live_server_url, docs

संबंधित मुद्दे