django-nose icon indicating copy to clipboard operation
django-nose copied to clipboard

Django 1.11 SetUpClass error in FastFixtureTestCase: AttributeError: 'module' object has no attribute 'enter_transaction_management'

Open MidhunSukumaranBB opened this issue 8 years ago • 3 comments

I am using django 1.11 and django-nose==1.4.5. This is how my base test case class looks like:

class BaseTestCase(FastFixtureTestCase):

   @classmethod
    def setUpClass(cls):
        from django.db import transaction
        for db in cls._databases():
            transaction.enter_transaction_management(using=db)
            transaction.managed(True, using=db)

        cls._fixture_setup()

But getting SetUpClass error in FastFixtureTestCase: AttributeError: 'module' object has no attribute 'enter_transaction_management'. I have seen similar issue: https://github.com/django-nose/django-nose/issues/226. Is it fixed?

MidhunSukumaranBB avatar Oct 06 '17 13:10 MidhunSukumaranBB

No, issue #226 is not fixed. You could try the code in PR #258, which would give us some confirmation that the fix works.

jwhitlock avatar Oct 24 '17 18:10 jwhitlock

@jwhitlock @bennylope I have gone through the code in #258 but, he is entirely removing for loop with transaction management. I am wondered how does this solves the problem. Don't we need transaction entirely for setting up FastfixtureTestCase ???

lokeshatbigbasket avatar Oct 27 '17 06:10 lokeshatbigbasket

I have tried the code in #258 with Django 1.11.15 and it gets me past the AttributeError: 'module' object has no attribute 'enter_transaction_management' issue. However, now all tests error with:

$ python ./manage.py test my.tests.test_module  --settings=test_settings --processes 2
nosetests my.tests.test_module --cover-erase --cover-package=utils,2 --processes 2 --verbosity=1
Creating test database for alias 'default'...
EEEEEEEEEE
======================================================================
ERROR: My test's doc string
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/henrylongmore/.venv/myproject/lib/python2.7/site-packages/django/test/testcases.py", line 209, in __call__
    self._pre_setup()
  File "/Users/henrylongmore/.venv/myproject/lib/python2.7/site-packages/django_nose/testcases.py", line 123, in _pre_setup
    from django.contrib.sites.models import Site
  File "/Users/henrylongmore/.venv/myproject/lib/python2.7/site-packages/django/contrib/sites/models.py", line 84, in <module>
    class Site(models.Model):
  File "/Users/henrylongmore/.venv/myproject/lib/python2.7/site-packages/django/db/models/base.py", line 118, in __new__
    "INSTALLED_APPS." % (module, name)
RuntimeError: Model class django.contrib.sites.models.Site doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

I did pip install git+https://github.com/bennylope/django-nose.git@fast-fixture-test-case to get the code. It could be I may have better results if I get the current master, then apply those fixes?

UPDATE: I tried pip install django_nose==1.4.5 then manually applying just the code changes from https://github.com/bennylope/django-nose.git@fast-fixture-test-case, and I still get the RuntimeError: Model class django.contrib.sites.models.Site doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

UPDATE 2: In ignoring the files that weren't present in my virtualenv, I missed the update to INSTALLED_APPS. Now that my test settings file has

INSTALLED_APPS += ['django.contrib.sites', 'django_nose', 'django_extensions',]

the few classes that inherit from FastFixtureTestCase pass successfully. I'll try making some more inherit from it.

UPDATE 3: And that went quite poorly. At first it resulted in fewer errors, but more failures, from tests that were otherwise passing. Then I tried adding --with-fixture-bundling, and hundreds of tests failed and had errors.

vhlongmore avatar Oct 03 '18 03:10 vhlongmore