Package: django-nose-selenium
Adds selenium testing support to your nose test suite.To use, run nosetests with the--with-seleniumflag.Why use Selenium?Selenium is a portable testing framework for web applications. It allows you to
write tests that run in the browser to test your user interface and javascript
code that is not available through the usual testing channels. See the examples
below to get a clearer impression of what selenium tests can provide.django-nose-selenium allows you to write and run selenium tests the same way as
usual django unit tests.RequirementsThe plugin expects that you have configured thedjango-noseapp. In a nutshell,
this is done by runningpip installdjango-nose, addingdjango_nosetoINSTALLED_APPSand settingTEST_RUNNERtodjango_nose.NoseTestSuiteRunnerin the settings.py.InstallationFrom PyPI:pip install django-nose-seleniumIn-development versionvia Pip:pip install django-nose-selenium==devDirectly from Git:pip install -e
git://github.com/weluse/django-nose-selenium.git#egg=django-nose-seleniumDjango SettingsThe plugin supports the following settings:SELENIUM_HOST, default:127.0.0.1SELENIUM_PORT, default:4444SELENIUM_BROWSER_COMMAND, default:chromeSELENIUM_URL_ROOT, default:http://127.0.0.1:8000FORCE_SELENIUM_TESTS, default:False. By default, SocketErrors cause the
tests to be skipped. This options causes the tests to fail when the
Selenium server is unavailable.UsageDefine the class variableselenium_test = Truein your nose test class.
You can useself.seleniumto access a selenium instance with the given
options:class TestSelenium(TestCase):

    selenium_test = True

    def test_start(self):
        """Tests the start page."""

        self.selenium.open("/")To run this test, you have to pass the option--with-seleniumto the Django
management command test:python manage.py test --with-seleniumAlternatively, django-nose-selenium provides a mixin that has the benefit of
raising a SkipTest exception if the plugin was not loaded and the selenium
attribute is accessed:from noseselenium.cases import SeleniumTestCaseMixin


class TestSelenium(TestCase, SeleniumTestCaseMixin):

    def test_start(self):
        """Tests the start page."""

        self.selenium.open("/")FixturesThe default fixtures of django are run in transactions and not available to a
live testing server, thereforenoseseleniumprovides an option to loadand
commitfixtures to the database automatically. Please note that there’s no
automatic rollback, so the data will stay in your test database for the rest of
the run if you don’t provide a custom teardown strategy.from noseselenium.cases import SeleniumTestCaseMixin


class TestUserLogin(TestCase, SeleniumTestCaseMixin):

    selenium_fixtures = ['user_data.json']

    def tearDown(self):
        # Remove data from user_data.json

    def test_login(self):
        """Tests the login page."""

        sel = self.selenium
        sel.open("/login/")
        sel.type("id_username", "pascal")
        sel.type("id_password", "iwantapony")
        sel.click("//form[@id='myform']/p/button")
        sel.wait_for_page_to_load(5000)
        self.failUnless(self.is_text_present("Hello, Pascal!"))To enable selenium fixtures, nosetests must be called with the
additional--with-selenium-fixturesflag.Liveservernoseseleniumprovides expiremental support for running a live server that
Selenium can connect to. Currently, there’s a threaded server that reuses
django’s development webserver and a cherrypy implementation. It’s recommended
you use the cherrypy one as the django devserver is certainly not designed to
run in a multi-threaded environment.The liveserver plugin introduces two new configuration options:LIVE_SERVER_ADDRESS, defaults to0.0.0.0LIVE_SERVER_PORT, defaults to8080LIVE_SERVER_STATIC, boolean that defaults to True. If enabled, the live
server enables serving of static files via thedjango.contrib.staticfilesapp.These should match yourSelenium Settings.To start the liveserver, nosetest is called with either the--with-djangoliveserveror preferably the--with-cherrypyliveserverflag.