StaticLiveServerTestCase: database emptied after first test after upgrading to Django 1.11

44 views
Skip to first unread message

Tom Evans

unread,
Feb 23, 2018, 7:15:04 AM2/23/18
to django...@googlegroups.com
Hi all

We have a bunch of functional tests derived from
StaticLiveServerTestCase using selenium that have started failing
after upgrading from Django 1.8 to Django 1.11.

The database is initially populated via data migrations, but after
running one test it all the data loaded via migrations has been
removed from the database, and all subsequent tests fail because the
expected data is not in the database.

Note that this is after running one test, not one test case; if we run
each test from an affected test case individually, they pass; if we
run the entire test case, the first test passes and the rest fail.

These tests were initially written under Django 1.8, with the data
coming from the same migrations, and they worked correctly in Django
1.8.

I looked back through the release notes and documentation; rollback
emulation[1] via serialized_rollback=True appeared promising, but
after enabling it we had IntegrityErrors immediately after finishing
the first test; it appears as though when it was attempting to re-load
the serialized data back in to the database, the data was still there:

Any thoughts? I've included some of the output below - running without
serialized_rollback[2] and with[3]. Unfortunately, I cannot share much
of the code itself.

Cheers

Tom

[1] https://docs.djangoproject.com/en/1.11/topics/testing/overview/#rollback-emulation
[2]
tests.functional_tests.test_search_defaults.DefaultSearchResultsTest
test_browsing_to_a_saved_search_keeps_the_default_hero_block ...
[<Group: dev_group>, <Group: vip_dev_group>, <Group: CMS Editors>]
ok
test_infinite_scrolling_of_search_results ... []
ERROR
screenshotting to
/home/london/te/moat-effortless_web_app/reports/screendumps/DefaultSearchResultsTest.test_infinite_scrolling_of_search_results-window0-2
018-02-23T11.59.55.png
dumping page HTML to
/home/london/te/moat-effortless_web_app/reports/screendumps/DefaultSearchResultsTest.test_infinite_scrolling_of_search_results-window
0-2018-02-23T11.59.55.html
writing har log to
/home/london/te/moat-effortless_web_app/reports/screendumps/DefaultSearchResultsTest.test_infinite_scrolling_of_search_results-window0-
2018-02-23T11.59.55.har.logwriting browser log to
/home/london/te/moat-effortless_web_app/reports/screendumps/DefaultSearchResultsTest.test_infinite_scrol
ling_of_search_results-window0-2018-02-23T11.59.55.browser.logLast URL
visited was http://dev-vip04.london.mintel.ad:53066/facelift/
http requests made during test:



======================================================================
ERROR: test_infinite_scrolling_of_search_results
(tests.functional_tests.test_search_defaults.DefaultSearchResultsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/data/home/london/te/moat-effortless_web_app/web_app/tests/functional_tests/test_search_defaults.py",
line 10, in test_infinite_scrolling_of_searc
h_results
homepage = HomePage.browse_to_directly(self)
File "/data/home/london/te/moat-effortless_web_app/web_app/tests/functional_tests/pages/base.py",
line 61, in browse_to_directly
page.wait_for_page_load()
File "/data/home/london/te/moat-effortless_web_app/web_app/tests/functional_tests/pages/home.py",
line 248, in wait_for_page_load
self.test.waitFor(_assert_page_ready)
File "/data/home/london/te/moat-effortless_web_app/web_app/tests/functional_tests/base.py",
line 394, in waitFor
return function_with_assertion(*args)
File "/data/home/london/te/moat-effortless_web_app/web_app/tests/functional_tests/pages/home.py",
line 246, in _assert_page_ready
'div.home-page'
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py",
line 397, in find_element_by_css_selector
return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py",
line 707, in find_element
{'using': by, 'value': value})['value']
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py",
line 196, in execute
self.error_handler.check_response(response)
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py",
line 181, in check_response
raise exception_class(message, screen, stacktrace)
NoSuchElementException: Message: {"errorMessage":"Unable to find
element with css selector
'div.home-page'","request":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection":"close","Content-Length":"104","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:38766","User-Agent":"Python-urllib/2.7"},"httpVersion":"1.1","method":"POST","post":"{\"using\":
\"css selector\", \"sessionId\":
\"073fdaf0-1891-11e8-aa90-778d14a3b7d7\", \"value\":
\"div.home-page\"}","url":"/element","urlParsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["element"]},"urlOriginal":"/session/073fdaf0-1891-11e8-aa90-778d14a3b7d7/element"}}
Screenshot: available via screen

----------------------------------------------------------------------
Ran 2 tests in 28.708s

FAILED (errors=1)


[3]
tests.functional_tests.test_search_defaults.DefaultSearchResultsTest
test_browsing_to_a_saved_search_keeps_the_default_hero_block ...
[<Group: dev_group>, <Group: vip_dev_group>, <Group: CMS Editors>]
ok
ERROR

======================================================================
ERROR: test_infinite_scrolling_of_search_results
(tests.functional_tests.test_search_defaults.DefaultSearchResultsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/test/testcases.py",
line 209, in __call__
self._pre_setup()
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/test/testcases.py",
line 856, in _pre_setup
self._fixture_setup()
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/test/testcases.py",
line 903, in _fixture_setup
connections[db_name]._test_serialized_contents
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/db/backends/base/creation.py",
line 131, in deserialize_db_fro
m_string
obj.save()
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/core/serializers/base.py",
line 205, in save
models.Model.save_base(self.object, using=using, raw=True, **kwargs)
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/db/models/base.py",
line 838, in save_base
updated = self._save_table(raw, cls, force_insert, force_update,
using, update_fields)
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/db/models/base.py",
line 924, in _save_table
result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/db/models/base.py",
line 963, in _do_insert
using=using, raw=raw)
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/db/models/manager.py",
line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/db/models/query.py",
line 1076, in _insert
return query.get_compiler(using=using).execute_sql(return_id)
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/db/models/sql/compiler.py",
line 1112, in execute_sql
cursor.execute(sql, params)
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/db/backends/utils.py",
line 79, in execute
return super(CursorDebugWrapper, self).execute(sql, params)
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/raven/contrib/django/client.py",
line 123, in execute
return real_execute(self, sql, params)
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/db/backends/utils.py",
line 64, in execute
return self.cursor.execute(sql, params)
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/db/utils.py",
line 94, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/db/backends/utils.py",
line 64, in execute
return self.cursor.execute(sql, params)
File "/data/home/london/te/moat-effortless_web_app/env/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py",
line 328, in execute
return Database.Cursor.execute(self, query, params)
IntegrityError: column group_id is not unique

----------------------------------------------------------------------
Ran 1 test in 9.415s

FAILED (errors=1)

Simon McConnell

unread,
Feb 23, 2018, 3:51:18 PM2/23/18
to Django users
Reply all
Reply to author
Forward
0 new messages