New issue 503: Session fixtures invoked https://bitbucket.org/hpk42/pytest/issue/503/session-fixtures-invoked
Andreas Pelme: Since https://bitbucket.org/hpk42/pytest-xdist/commits/05aa4f48306c905ae4d183a4b337f63cc4490466 session scoped fixtures runs multiple times. To trace this, I have added this code to the problematic fixture: ``` class Count(object): counter = 0 counter = Count() @pytest.fixture(scope='session') def _django_db_setup(request, _django_runner, _django_cursor_wrapper): """Session-wide database setup, internal to pytest-django""" counter.counter += 1 if counter.counter >= 2: print '_django_db_setup called %d times!' % counter.counter assert 0 # ... no other changes ``` This is what happends: ``` $ py.test functional_tests/test_pdf_generation.py --capture=fd -v -n1 ======================================================== test session starts ======================================================== platform darwin -- Python 2.7.5 -- py-1.4.21.dev1 -- pytest-2.6.0.dev1 plugins: django, xdist, cache, instafail gw0 [3] scheduling tests via LoadScheduling .E _________________________________________ ERROR at setup of test_kontrolluppgift_pdf_staff __________________________________________ [gw0] darwin -- Python 2.7.5 /Users/andreas/code/personalkollen/venv-2.7/bin/python ../pytest_django/pytest_django/plugin.py:177: in _django_db_marker > request.getfuncargvalue('db') ../pytest/_pytest/python.py:1319: in getfuncargvalue > return self._get_active_fixturedef(argname).cached_result[0] ../pytest/_pytest/python.py:1333: in _get_active_fixturedef > result = self._getfuncargvalue(fixturedef) ../pytest/_pytest/python.py:1385: in _getfuncargvalue > val = fixturedef.execute(request=subrequest) ../pytest/_pytest/python.py:1802: in execute > fixturedef = request._get_active_fixturedef(argname) ../pytest/_pytest/python.py:1333: in _get_active_fixturedef > result = self._getfuncargvalue(fixturedef) ../pytest/_pytest/python.py:1385: in _getfuncargvalue > val = fixturedef.execute(request=subrequest) ../pytest/_pytest/python.py:1835: in execute > self.yieldctx) ../pytest/_pytest/python.py:1761: in call_fixture_func > res = fixturefunc(**kwargs) ../pytest_django/pytest_django/fixtures.py:32: in _django_db_setup > assert 0 E assert 0 ------------------------------------------------------- Captured stdout setup ------------------------------------------------------- _django_db_setup called 2 times! E _________________________________________ ERROR at setup of test_kontrolluppgift_pdf_manual _________________________________________ [gw0] darwin -- Python 2.7.5 /Users/andreas/code/personalkollen/venv-2.7/bin/python ../pytest_django/pytest_django/plugin.py:177: in _django_db_marker > request.getfuncargvalue('db') ../pytest/_pytest/python.py:1319: in getfuncargvalue > return self._get_active_fixturedef(argname).cached_result[0] ../pytest/_pytest/python.py:1333: in _get_active_fixturedef > result = self._getfuncargvalue(fixturedef) ../pytest/_pytest/python.py:1385: in _getfuncargvalue > val = fixturedef.execute(request=subrequest) ../pytest/_pytest/python.py:1802: in execute > fixturedef = request._get_active_fixturedef(argname) ../pytest/_pytest/python.py:1333: in _get_active_fixturedef > result = self._getfuncargvalue(fixturedef) ../pytest/_pytest/python.py:1385: in _getfuncargvalue > val = fixturedef.execute(request=subrequest) ../pytest/_pytest/python.py:1835: in execute > self.yieldctx) ../pytest/_pytest/python.py:1761: in call_fixture_func > res = fixturefunc(**kwargs) ../pytest_django/pytest_django/fixtures.py:32: in _django_db_setup > assert 0 E assert 0 ------------------------------------------------------- Captured stdout setup ------------------------------------------------------- _django_db_setup called 3 times! ================================================= 1 passed, 2 error in 1.78 seconds ================================================= ``` The same test works fine without xdist: ``` $ py.test functional_tests/test_pdf_generation.py --capture=fd -v ======================================================== test session starts ======================================================== platform darwin -- Python 2.7.5 -- py-1.4.21.dev1 -- pytest-2.6.0.dev1 plugins: django, xdist, cache, instafail collected 3 items functional_tests/test_pdf_generation.py ... ===================================================== 3 passed in 2.09 seconds ====================================================== ``` This also happends with -n2, -n3 etc. It happens with pytest-xdist from revision 169 to latest tip, and pytest 2.5.2 to latest tip. _______________________________________________ pytest-commit mailing list pytest-commit@python.org https://mail.python.org/mailman/listinfo/pytest-commit