/ / Django / चल रहे परीक्षण के लिए डेटाबेस निर्माण के लिए सेटअप पोस्टग्रेट करता है - अजगर, django, यूनिट-परीक्षण

परीक्षण चलाने के लिए डेटाबेस निर्माण के लिए Django / postgres सेटअप - पायथन, django, इकाई परीक्षण

मेरे unittests का विस्तार हो रहा है django.test.TestCase। SQLite3 बैकएंड का उपयोग करके, वे ठीक चल रहे हैं।

मैं उन्हें PostgreSQL बैकएंड के साथ चलाना चाहता हूं, औरपहली बात यह है कि परीक्षण कर रहे हैं और परीक्षण डेटाबेस बनाने के लिए प्रयास करें। यह विफल रहता है, क्योंकि django के पास ऐसा करने की कोई अनुमति नहीं है। मैं PostgreSQL / django को कॉन्फ़िगर करना चाहता हूं ताकि इस ऑपरेशन की अनुमति हो, लेकिन मुझे यह कैसे करना है, इस पर कोई दस्तावेज नहीं मिल सकता है।

ये सेटिंग्स के लिए उपयोग किया जाता है जुडिये डेटाबेस के लिए (settings.py):

DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": "mydb",
"USER": "myuser",
"PASSWORD": "myppasss",
"HOST": "localhost",
"PORT": "",
}
}

Django एप्लिकेशन को चलाते समय, मेरे पास हमेशा एक पूर्व-निर्मित डेटाबेस और उपयोगकर्ता होता है, ताकि django कनेक्ट हो सके।

मेरे पास दो प्रश्न हैं:

  • कनेक्शन सेटिंग्स का क्या उपयोग किया जाता है सर्जन करना डेटाबेस, इकाई परीक्षण के दौरान? मेरी समझ यह है कि उपयोगकर्ता जो django का उपयोग एप्लिकेशन डेटाबेस से कनेक्ट करने के लिए कर रहा है उसे (और) की आवश्यकता नहीं है चाहिए नहीं) डेटाबेस निर्माण अधिकार है।
  • यह सब कहाँ वर्णित है? मैंने जो सबसे करीब पाया है यहाँ (TEST में कुंजी DATABASES पैरामीटर को कॉन्फ़िगर करें), लेकिन वे सेटिंग्स ज्यादातर ओरेकल डेटाबेस का उल्लेख करते हैं, और उनका एक अलग उद्देश्य है।

उत्तर:

जवाब के लिए 5 № 1

Django का उपयोग करेगा आपकी सेटिंग में समान कनेक्शन सेटिंग्स परीक्षणों के लिए, लेकिन एक अलग डेटाबेस का उपयोग करेगा (डिफ़ॉल्ट रूप से, test_mydb जहाँ आपका नियमित डेटाबेस है mydb)।

आप psql शेल में डेटाबेस बनाने के लिए django user अनुमतियों को बदल सकते हैं। देख इस संबंधित जवाब अधिक जानकारी के लिए।

=> ALTER USER myuser CREATEDB;

मुझे पता नहीं है कि क्या अनुमति को प्रतिबंधित करना संभव है ताकि django उपयोगकर्ता केवल डेटाबेस बना सके test_mydb.