python - Django LiveServerTestCase fails to load a page when I run multiple tests -


i trying run multiple tests within 1 django liveservertestcase. when run single test (with others commented) works expected. when run test case 2 tests first 1 works fine second 1 loads page "internal server error" message.

code:

from django.test import liveservertestcase selenium.webdriver.firefox.webdriver import webdriver   class myliveservertestcase(liveservertestcase):         """     basecleass selenium test cases     """     @classmethod     def setupclass(cls):         cls.driver = webdriver()         cls.url = cls.live_server_url              super(myliveservertestcase, cls).setupclass()      @classmethod     def teardownclass(cls):         cls.driver.quit()         super(myliveservertestcase, cls).teardownclass()  class admineditformtest(myliveservertestcase):     """     test case     """      def test_valid_data(self):         """         test when user enters correct data         """         self.driver.get(self.url)         # ...      def test_invalid_data(self):         """ test when user enters incorrect data """         self.driver.get(self.url)         # ... 

if use close() instead of quit() fails "error 98: address in use" similar this case except have error when have multiple tests in 1 liveservertestcase class or multiple test cases in 1 .py file.

how make liveservertestcase free port on teardown (if core problem)?

is there workaround? want functional selenium tests running equally on local , remote servers.

i using django 1.6.7, firefox 37.0, selenium 2.45.0

upd

using methods instead of classmethods leads same issue.

def setup(self):     self.driver = webdriver()     self.url = self.live_server_url      def teardown(self):     self.driver.quit() 

finally, reason "internal server error" message webdriver deletes data database on quit(), including contenttypes , other default tables.

this leads error when trying load fixtures @ begin of next test.

n.b. behaviour due way transactiontestcase (from liveservertestcase inherits) resets database after test runs: it truncates tables.


so far, solution load fixtures data (also "default" django data, e.g. contenttypes) on every test run.

class myliveservertestcase(liveservertestcase):         """     baseclass selenium test cases     """     fixtures = ['my_fixture_with_all_default_stuff_and_testing_data.json']      @classmethod     def setupclass(cls):         cls.driver = webdriver()         cls.url = cls.live_server_url             super(myliveservertestcase, cls).setupclass()      @classmethod     def teardownclass(cls):         cls.driver.quit()         super(myliveservertestcase, cls).teardownclass() 

thanks @help_asap pointing out flushing database on quit() problem!


Comments

Popular posts from this blog

cakephp - simple blog with croogo -

How to group boxplot outliers in gnuplot -

bash - Performing variable substitution in a string -