क्या हमने किया डिफ़ॉल्ट test_runner ओवरराइड इतना है कि यह के खिलाफ परीक्षण करने के लिए एक नया डेटाबेस नहीं बना होता था। इस तरह, यह हमारे मौजूदा स्थानीय डेटाबेस की तरह दिखने के खिलाफ परीक्षण चलाता है। लेकिन अगर आप इस विधि का उपयोग करते हैं तो बहुत सावधान रहें क्योंकि आपके परीक्षण में आपके द्वारा किए गए डेटा में किए गए किसी भी बदलाव स्थायी होंगे। मैंने सुनिश्चित किया है कि हमारे सभी परीक्षण किसी भी बदलाव को उनके मूल स्थिति में वापस बहाल करते हैं, और सर्वर पर हमारे डेटाबेस का हमारे प्राचीन संस्करण को बनाए रखते हैं और बैक अप लेते हैं।
तो यह करने के लिए आप अपने प्रोजेक्ट में किसी स्थान पर django.test.simple से run_test विधि कॉपी करने की जरूरत है - मैं MyProject/परीक्षण/test_runner.py में मेरा डाल
तब में निम्न परिवर्तन उस विधि: जब आप चलाने
TEST_RUNNER = 'myproject.test.test_runner.run_tests'
अब:
// change
old_name = settings.DATABASE_NAME
from django.db import connection
connection.creation.create_test_db(verbosity, autoclobber=not interactive)
result = unittest.TextTestRunner(verbosity=verbosity).run(suite)
connection.creation.destroy_test_db(old_name, verbosity)
// to:
result = unittest.TextTestRunner(verbosity=verbosity).run(suite)
शीर्ष पर सभी आवश्यक आयात करने के लिए सुनिश्चित करें और फिर अपनी सेटिंग में सेटिंग सेट फ़ाइल। /manage.py परीक्षण Django आपकी वर्तमान मॉडल परिभाषाओं के आधार पर एक नया संस्करण बनाने के बजाय आपके डेटाबेस की वर्तमान स्थिति के खिलाफ परीक्षण चलाएगा।
एक और बात आप कर सकते हैं स्थानीय रूप से अपने डेटाबेस की एक प्रतिलिपि बनाने, और उसके बाद अपने नए run_test में एक चेक करना है() इस तरह विधि:
if settings.DATABASE_NAME != 'my_test_db':
sys.exit("You cannot run tests using the %s database. Please switch DATABASE_NAME to my_test_db in settings.py" % settings.DATABASE_NAME)
इस तरह वहाँ के खिलाफ परीक्षण चलाने का कोई खतरा नहीं है अपने मुख्य डेटाबेस