2017-01-20 8 views
15

मैं अपने वर्तमान pytest3/Django1.7 पर्यावरण में pytest-django जोड़ने की कोशिश कर रहा हूं।पीईटीएस्ट-डीजेगो गायब django_migration तालिका पर विफल रहा

वर्तमान में हम प्लगइन का उपयोग नहीं कर रहे हैं और कुछ परीक्षणों

सब कुछ लगता है नेत्रहीन अच्छे लग रहे हैं और परीक्षण अंत तक पारित करने के लिए जब मैं निम्न त्रुटि संदेश मिलता है प्रतीत बीच साझा राज्य से पीड़ित किया गया है:

request = <SubRequest '_django_db_marker' for <Function 'test_filter_recurring_outside_sync_window'>> 

    @pytest.fixture(autouse=True) 
    def _django_db_marker(request): 
     """Implement the django_db marker, internal to pytest-django. 

     This will dynamically request the ``db`` or ``transactional_db`` 
     fixtures as required by the django_db marker. 
     """ 
     marker = request.keywords.get('django_db', None) 
     if marker: 
      validate_django_db(marker) 
      if marker.transaction: 
       getfixturevalue(request, 'transactional_db') 
      else: 
       getfixturevalue(request, 'db') 

ve/lib/python2.7/site-packages/pytest_django/plugin.py:376: 


self = <django.db.backends.sqlite3.base.SQLiteCursorWrapper object at 0x11976a478> 
query = 'SELECT "django_migrations"."app", "django_migrations"."name" FROM "django_migrations"', params =() 

    def execute(self, query, params=None): 
     if params is None: 
      return Database.Cursor.execute(self, query) 
     query = self.convert_query(query) 
>  return Database.Cursor.execute(self, query, params) 
E  OperationalError: no such table: django_migrations 

ve/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py:485: OperationalError 

मैंने ensure_schema के साथ conftest.py में तालिका बनाने का प्रयास किया। मैंने --nomigrations और --create-db से pytest के हर विकल्प का प्रयास किया है।

मुझे लगता है कि यह एक विरासत प्रणाली के साथ एक अजीब कॉन्फ़िगरेशन समस्या है, लेकिन मुझे यकीन नहीं है कि कहां देखना शुरू करना है। किसी के पास सुझाव हैं?

+0

क्या आपने मस्तिष्क की कोशिश की है और प्रत्येक ऐप के लिए अलग से माइग्रेट किया है? यह आपके मुद्दों को कई बार –

+0

पर हल कर सकता है क्या आप 'py.test/path/to/django/project --nomigrations --ds = myproject.settings.test' जैसे कुछ उपयोग कर रहे हैं? आप क्या आदेश चला रहे हैं? – FlipperPA

उत्तर

4

ऐसा लगता है कि माइग्रेशन के साथ कोई समस्या हो सकती है।

./manage.py schemamigration research --auto चल रहा है से पता चलता है कि अधिकांश फ़ील्ड में कोई डिफ़ॉल्ट निर्दिष्ट नहीं है।

इसके बाद, आप तो चलाने ./manage.py schemamigration research --init द्वारा ./manage.py migrate research

यह मेरे लिए काम किया के बाद मैं तालिका बनने का पालन किया:

python manage.py migrate --run-syncdb 

नोट: पहले अजगर makemigrations चलाने के लिए मत भूलना, यानी python manage.py makemigrations {name of the app where patients model is}

उपयोगी टिप्स: एक टैबलेट है ई django द्वारा उत्पन्न django_migrations कहा जाता है जो पर लागू माइग्रेशन का ट्रैक रखता है। यदि आप अपना हटाते हैं, तो उन्हें फिर से उत्पन्न करें और तालिका से रिकॉर्ड्स हटाए बिना migrate पर प्रयास करें, फिर django सोचें कि यह पहले से ही लागू है। आपको अपने माइग्रेशन को कभी भी मिटाना नहीं चाहिए, क्योंकि इससे डीजेंगो भ्रमित हो जाएंगे।

आप छोड़ सकते हैं माइग्रेशन कदम अगर आप सक्रिय रूप से विकसित कर रहे हैं आप सक्रिय रूप से विकसित कर रहा है और पूरे migrations प्रणाली आप कर सकते हैं छोड़ना चाहते रहे हैं, तो लेकिन एक बार आप migrations का उपयोग शुरू, उन्हें हटा दें कभी नहीं । यहाँ एक नई परियोजना के विकास, जबकि मैं क्या उपयोग है:

dropdb mydb && createdb mydb && python manage.py migrate --run-syncdb && python manage.py loaddata initial 

सबसे पहले, यह डेटाबेस और सभी डेटा चला जाता है। फिर यह एक खाली एक बनाता है। --run-syncdbfixtures file से स्कीमा उत्पन्न करता है और loaddata डेटा लोड करता है।

तो, आप अभी भी विकसित कर रहे हैं और अपने सभी डेटा को हटाने के लिए कदम और क्या आप एक जुड़नार फाइल करने के लिए के बारे में परवाह है, तो आप अपने सभी प्रवास फ़ोल्डर हटा सकते हैं कर सकते हैं। जब आप अपना मॉडल बदलते हैं तो आप उपरोक्त आदेश चला सकते हैं।

संबंधित मुद्दे