Как запустить тесты Selenium для тестовой базы данных? - PullRequest
4 голосов
/ 27 января 2012

Мне нравится запускать тесты, прежде чем я сделаю коммит.Я новичок в 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()  

Ответы [ 2 ]

2 голосов
/ 27 января 2012

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

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

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

0 голосов
/ 27 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...