बाहर निकलता है मैं गलत में था। मैं परीक्षण नहीं कर रहा था जो मैंने सोचा था कि परीक्षण किया जा रहा था ... चूंकि हेरोकू के रूटिंग मेष विभिन्न सर्वरों के लिए अनुरोध भेज रहा था, लाइवसेवरटेस्टकेस एक मशीन पर एक वेब सर्वर शुरू कर रहा था और सेलेनियम अन्य मशीनों से पूरी तरह से कनेक्ट हो रहा था।
को Heroku Procfile को अद्यतन करने के द्वारा:
web: python src/manage.py test --liveserver=0.0.0.0:$PORT
परीक्षण डेटाबेस को इंगित करने के DATABASES
सेटिंग अधिभावी, और टेस्ट स्वीट धावक नीचे से जुड़ा हुआ अनुरूपण (एक ही विचार अभी भी रखती है: setup_databases
तो ओवरराइड कि यह केवल टेबल को छोड़ देता है/फिर से बनाता है, पूरे डेटाबेस नहीं), मैं दूरस्थ परीक्षण चलाने में सक्षम था। लेकिन यह और भी हैकी/दर्दनाक/सुरुचिपूर्ण है। अभी भी कुछ बेहतर खोज रहे हैं! भ्रम के बारे में खेद है।
(नीचे अद्यतन जवाब)
ये कदम उठाएँ कि मेरे लिए काम किया हैं:
heroku addons:add heroku-postgresql:dev
का उपयोग कर एक अतिरिक्त, नि: शुल्क Postgres डेटाबेस बनाएं
- HerokuTestSuiteRunner कक्षा का उपयोग करें जो आपको here मिलेगा।
यह कस्टम परीक्षण धावक आवश्यकता है कि आप एक TEST_DATABASES
सेटिंग जो ठेठ DATABASES
इस प्रारूप के अनुसार परिभाषित करते हैं। उदाहरण के लिए:
TEST_DATABASES = {
'default': dj_database_url.config(env='TEST_DATABASE_URL')
}
फिर, TEST_RUNNER
सेटिंग जहाँ भी HerokuTestSuiteRunner पाया जा सकता है के लिए एक अजगर पथ होना है।
अब आप दिए गए डेटाबेस का उपयोग करके हेरोकू पर Django परीक्षण चलाने में सक्षम होना चाहिए। यह बहुत तेज़ हैक ... मुझे बताएं कि इसे कैसे सुधार किया जा सकता है/कम हैकिश बनाया जा सकता है। का आनंद लें!
(नीचे मूल जवाब)
कुछ प्रासंगिक समाधान here चर्चा की गई है। जैसा कि आप Django docs में पढ़ सकते हैं, "[डब्ल्यू] एसक्यूएलसाइट डेटाबेस इंजन का उपयोग करके, परीक्षण डिफ़ॉल्ट रूप से इन-मेमोरी डेटाबेस का उपयोग करेंगे"।
हालांकि यह उस डेटाबेस इंजन का पूरी तरह से परीक्षण नहीं करता है जिसका आप हेरोकू पर उपयोग कर रहे हैं (मैं अभी भी उस समाधान के लिए लुकआउट पर हूं), SQLite को डेटाबेस इंजन सेट करने से कम से कम आपको अपना भागने की अनुमति मिल जाएगी परीक्षण।
कुछ पॉइंटर्स के लिए उपरोक्त लिंक वाले स्टैक ओवरव्लो question देखें। कम से कम दो तरीके हैं: डेटाबेस इंजन के रूप में SQLite को मजबूर करने से पहले if 'test' in sys.argv
परीक्षण करना, या परीक्षण में उपयोग की जाने वाली एक समर्पित सेटिंग फ़ाइल होने पर, जिसे आप django manage.py test
पर --settings
विकल्प का उपयोग कर सकते हैं।
धन्यवाद ग्रेग - SQLite का उपयोग करना वास्तव में एक विकल्प नहीं है - हमारे पास SQLite (कोई बाधा/स्थिरता जांच) से गुजरने वाले परीक्षणों के कारण कुछ भयानक समस्याएं हैं जो बाद में लाइव पर उड़ा दी गई हैं। वर्तमान समाधान एक वीएम (Vagrant का उपयोग करके) के रूप में Heroku के रूप में दोहराना है और उन्हें वहां चलाने के लिए है। बहुत अच्छी तरह से काम करता है, और अब तक कोई आपदा नहीं है। –
धन्यवाद ह्यूगो, यह जानना अच्छा है। मैं या तो परीक्षण के लिए SQLite का उपयोग नहीं करूँगा (जैसा कि मैं उत्पादन में पोस्टग्रेस का उपयोग करता हूं)। अपने पर्यावरण में एक अतिरिक्त, मुफ्त 'heroku-postgresql: dev' डेटाबेस क्यों नहीं जोड़ें, जिस पर परीक्षण चलाया जा सकता है? जो मैं एकत्र कर सकता हूं, उससे उसी ऐड-ऑन के कई उदाहरण हो सकते हैं। –
अब * एक अच्छा विचार है। मैं कोशिश करूँगा। –