Assolutamente perdere la testa per questo. Non riesco a capire perché questo sta accadendo. Ogni volta che eseguo questo test, l'oggetto viene salvato nel normale database non di test. Tuttavia, entrambe le asserzioni alla fine del test falliscono comunque, dicendo che non riescono a trovare QUALSIASI utente nel database, anche se ogni volta che si esegue il test devo andare nell'amministratore per cancellare gli oggetti che è stato creato su localhost. Sto usando SQLITE3 nelle mie impostazioni, e capisco che i test SQLITE dovrebbero funzionare in memoria, piuttosto che colpire il database. Ho cercato e cercato e non riesco a trovare alcuna informazione utile sul web. Ecco la funzione di test:Django funzionale LiveServerTestCase - Dopo aver inviato il modulo con selenio, gli oggetti salvano nel database non di prova
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()
Se c'è un altro contesto che posso fornire, ti mostrerò felicemente. Questo è praticamente un progetto vuoto, quindi non ci sono impostazioni strane o insolite in settings.py che potrebbero confondere le cose. Qualsiasi aiuto sarebbe molto apprezzato.
Non utilizzare mai SQLLite 3 come terreno di prova. È orribile in tutti i 58 modi fino alla domenica. –
@limelights Appena installato e installato postgres sulla mia macchina e ottenere lo stesso errore. Mi sto davvero frustrando con questo ora. –
Quale comando stai usando per eseguire i test? – Alasdair