Absolutnie gubię mój mózg nad tym. Nie rozumiem, dlaczego tak się dzieje. Za każdym razem, gdy uruchomię ten test, obiekt zostanie zapisany w normalnej, nie testowanej bazie danych. Jednak oba twierdzenia na końcu testu i tak kończą się niepowodzeniem, mówiąc, że nie mogą znaleźć DOWOLNYCH użytkowników w bazie danych, mimo że za każdym razem, gdy test jest uruchamiany, muszę przejść do administratora, aby usunąć obiekty, które utworzył na localhost. Używam SQLITE3 w moich ustawieniach i rozumiem, że testy SQLITE mają być uruchamiane w pamięci, a nie uderzanie w bazę danych. Szukałem i szukałem i nie mogę znaleźć żadnych przydatnych informacji w Internecie. Oto funkcja testu:Django funkcjonalny LiveServerTestCase - Po przesłaniu formularza z selenem, obiekty zapisują do nietestownej bazy danych
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()
Jeśli istnieje inny kontekst, który mogę przedstawić, z przyjemnością pokażę. Jest to praktycznie pusty projekt, więc w settings.py nie ma żadnych dziwnych lub nietypowych ustawień, które mogłyby wprowadzać w błąd. Każda pomoc będzie bardzo ceniona.
Nigdy nie używaj SQLLite 3 jako poligonu badawczego. To straszne na wszystkich 58 odcinkach do niedzieli. –
@limelights Właśnie zainstalowałem i ustawiłem postgres na moim komputerze i otrzymałem ten sam błąd. Naprawdę denerwuję się teraz. –
Jakiego polecenia używasz do uruchamiania testów? – Alasdair