में एक ही परीक्षण डेटाबेस का उपयोग करके मैं निम्नलिखित डीबी सेटिंग्स के साथ एक परीक्षण डेटाबेस का उपयोग कर pytests चला रहा हूँ।Django: एक अलग थ्रेड
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'postgres',
'USER': 'something',
'PASSWORD': 'password',
},
}
@ pytest.mark.django_db का उपयोग करना, अपने परीक्षण कार्यों एक डेटाबेस 'test_postgres' परीक्षण के लिए बनाया बुलाया एक्सेस करते हैं।
@pytest.mark.django_db
def test_example():
from django.db import connection
cur_ = connection.cursor()
print cur_.db.settings_dict
आउटपुट:
{'ENGINE': 'django.db.backends.postgresql_psycopg2', 'AUTOCOMMIT': True, 'ATOMIC_REQUESTS': False, 'NAME': 'test_postgres', 'TEST_MIRROR': None,...
लेकिन अगर मैं test_example अंदर एक धागा चलाएँ:
मुझे लगता है कि सूत्र में कर्सर का उपयोग कर रहा है डेटाबेस 'postgres' नाम दिया है कि देख सकते हैं जो है गैर परीक्षण डेटाबेस। आउटपुट:
{'ENGINE': 'django.db.backends.postgresql_psycopg2', 'AUTOCOMMIT': True, 'ATOMIC_REQUESTS': False, 'NAME': 'postgres', 'TEST_MIRROR': None,...
वहाँ मूल परीक्षण समारोह से मेरी धागा करने के लिए डेटाबेस कनेक्शन तर्क गुजरती हैं और अपने परीक्षण समारोह के रूप में एक ही डेटाबेस नाम ('test_postgres') का उपयोग करने के लिए अपने धागा दिनचर्या को बताने के लिए एक तरीका है?
धन्यवाद, ऊपर एक 'PicklingError: <0x0000000006901208 पर समारोह function_to_run> अचार नहीं कर सकता: यह के रूप में नहीं मिला है ...' देता है। इसके अलावा, मैं कई परीक्षणों के बीच थ्रेड फ़ंक्शन साझा करना चाहता हूं। मैंने pytest.mark.db के साथ थ्रेड फ़ंक्शन को सजाने की कोशिश की, हालांकि यह कुछ भी नहीं करेगा क्योंकि यह मल्टीप्रोसेसिंग मॉड्यूल के माध्यम से चलाया जाता है, न कि परीक्षण धावक। – mpaf
ने मेरा उत्तर – ptr
अपडेट किया है, मैंने इसे क्लास विधि बनाने का प्रयास किया है, लेकिन फिर भी डेटाबेस का उपयोग डिफ़ॉल्ट डेटाबेस है, परीक्षण डेटाबेस नहीं। मुझे लगता है कि समस्या यह है कि हम किसी भी django परीक्षण धावकों के माध्यम से बाल प्रक्रिया नहीं चला रहे हैं - जो मैं नहीं चाहता क्योंकि यह एक परीक्षण नहीं है (कोई पास/असफल नहीं है)। मैं उस बच्चे की प्रक्रिया की django सेटिंग्स को नियंत्रित करने में सक्षम होना चाहता हूं, लेकिन मैं सक्षम नहीं हूं। – mpaf