2012-01-26 3 views
3

Мне нравится запускать тесты перед тем, как совершить. Я новичок в Selenium, и я не понимаю, как запускать тесты и не изменять базу данных.Как я могу запускать тесты Selenium против тестовой базы данных?

В моей локальной базе данных есть десятки одинаковых размещенных вопросов.

Есть ли способ, которым у меня могут быть эти тесты, и не вернуть базу данных в исходное состояние на tearDown?

from selenium import webdriver 
from django.utils import unittest 
from selenium.webdriver.support.ui import WebDriverWait 

class TestAuthentication(unittest.TestCase): 
    scheme = 'http' 
    host = 'localhost' 
    port = '4444' 


    def setUp(self): 
     self._driver = webdriver.Firefox() 
     self._driver.implicitly_wait(5) 

    def login_as_Bryan(self): 
     self._driver.get('http://localhost:8000/account/signin/') 
     user = self._driver.find_element_by_id('id_username') 
     user.send_keys("Bryan") 
     password = self._driver.find_element_by_id('id_password') 
     password.send_keys('***************') 
     submit = self._driver.find_element_by_id('blogin') 
     submit.click() 

    def test_user_should_be_able_to_login_manually(self): 
     self.login_as_Bryan(self) 
     message = self._driver.find_element_by_class_name('darkred') 
     self.assertEqual("Welcome back Bryan, you are now logged in", message.text) 

    def test_Bryan_can_post_question(self): 
     self.login_as_Bryan() 
     self._driver.find_element_by_link_text("ask a question").click() 
     self._driver.find_element_by_id('id_title').send_keys("Question should succeed") 
     self._driver.find_element_by_id('editor').send_keys("This is the body text.") 
     self._driver.find_element_by_id('id_tags').send_keys("test") 
     self._driver.find_element_by_class_name("submit").click() 
     self.assertTrue(self._driver.find_element_by_link_text("Question should succeed")) 

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

ответ

1

Проблема не столько в Selenium, сколько в вашей среде исполнения. Это зависит от того, как вы запускаете приложение.

В общем, вам нужно перезагрузить запуск приложения, чтобы он указывал на временную базу данных для использования только во время этого теста. После выполнения теста вы должны удалить эту базу данных.

В качестве альтернативы, вы можете предоставить механизм пользовательского интерфейса на своем фактическом веб-сайте, чтобы очистить/обновить тестовую базу данных. В этом случае вам все равно нужна тестовая база данных, но вам не нужно удалять/воссоздавать ее при каждом выполнении теста.

0

Вы можете использовать django-selenium, он проводит тесты в базе данных тестов

Смежные вопросы