मेरे पास एक Django एप्लिकेशन है जिसे मैंने हाल ही में Django 1.8.4 में अपग्रेड किया है। मैं 200 से अधिक एकीकरण और यूनिट परीक्षण चलाने के लिए अपने परीक्षण धावक के लिए नाक 1.3.7 और django-nose 1.4.1 का उपयोग कर रहा हूं। दोनों Django और नाक अपग्रेड करने के बाद, मैं खोजने कर रहा हूँ कि मेरी परीक्षणों के 12 यह वही त्रुटि के साथ विफल:Django 1.8 और नाक: विरोधाभासी मॉडल?
======================================================================
ERROR: Failure: RuntimeError (Conflicting 'c' models in application 'nose': <class 'account.tests.form_tests.TestAddress'> and <class 'nose.util.C'>.)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/me/venv/myproj/lib/python2.7/site-packages/nose/loader.py", line 523, in makeTest
return self._makeTest(obj, parent)
File "/Users/me/venv/myproj/lib/python2.7/site-packages/nose/loader.py", line 568, in _makeTest
obj = transplant_class(obj, parent.__name__)
File "/Users/me/venv/myproj/lib/python2.7/site-packages/nose/util.py", line 644, in transplant_class
class C(cls):
File "/Users/me/venv/myproj/lib/python2.7/site-packages/django/db/models/base.py", line 311, in __new__
new_class._meta.apps.register_model(new_class._meta.app_label, new_class)
File "/Users/me/venv/myproj/lib/python2.7/site-packages/django/apps/registry.py", line 223, in register_model
(model_name, app_label, app_models[model_name], model))
RuntimeError: Conflicting 'c' models in application 'nose': <class 'account.tests.form_tests.TestAddress'> and <class 'nose.util.C'>.
क्या उत्सुक है कि form_tests.py मॉड्यूल भी संदर्भित नहीं करती TestAddress जो वास्तव में एक क्लास के भीतर है मेरी "प्रोफाइल" मॉडल:
# myprof/profile/models.py
class TestAddress(models.Model):
user = models.OneToOneField(User, primary_key=True, unique=True)
address_line_1 = models.CharField(max_length=30)
address_line_2 = models.CharField(max_length=30, null=True, blank=True)
city = models.CharField(max_length=30)
region = models.CharField(max_length=30, null=True, blank=True)
postal_code = models.CharField(max_length=10, null=True, blank=True)
country = models.ForeignKey('Country')
class Meta:
db_table = 'test_address'
def __unicode__(self):
return u'%s' % (self.user.username)
मेरी परीक्षण TestAddress वर्ग का एक उदाहरण उत्पन्न करने के लिए की जरूरत है, मैं एक factory_boy का उपयोग (v 2.5.2।) कारखाना:
# utils/factories.py
from profile.models import TestAddress
class UserFactory(factory.django.DjangoModelFactory):
class Meta:
model = User
username = 'testuser'
class TestAddressFactory(factory.django.DjangoModelFactory):
class Meta:
model = TestAddress
user = factory.SubFactory('utils.factories.UserFactory')
address_line_1 = '123 Main St.'
address_line_2 = 'Apt. A'
city = 'AnyCity'
region = 'AnyRegion'
postal_code = '12345'
country = factory.SubFactory('utils.factories.CountryFactory')
मैं breakpoints सेट नाक loader.py मॉड्यूल में और पुष्टि की है कि लोडर "profile.models" में "TestAddress" देखता है। हालांकि, वहां "parent.__ name__" वैरिएबल है जो "account.tests.model_tests" पर सेट है। मैं सवालों की एक जोड़ी:
1. Why is this occurring?
2. Is there a way I can fix it?
3. Is there some way I can get nose to tell me which tests are resulting in these runtime errors so that I can at least disable them if I can't fix the problem?
मैं सेट "--verbosity = 2" लेकिन यह है कि में नाकाम रहने के परीक्षणों के नाम प्रदर्शित नहीं करता। मैंने नाक दस्तावेज़ों को देखा और कुछ भी नहीं देखा। सबसे खराब मामला मैं व्यक्तिगत रूप से प्रत्येक परीक्षण को कॉल करने के लिए एक स्क्रिप्ट लिख सकता हूं और इसे चलाने से पहले परीक्षण नाम को प्रतिबिंबित कर सकता हूं लेकिन यह बहुत बदसूरत और समय लेने वाला लगता है।
धन्यवाद।