2012-04-28 10 views
11

मेरे पास एक Django प्रोजेक्ट है जो स्थानीय PostgreSQL सर्वर का उपयोग करता है। मैं अपने पास कुछ अजीब बग डीबग करने के लिए एक डीबगर का उपयोग कर रहा हूं। जबकि परीक्षणों में से एक पर डीबगर बंद कर दिया गया है, मैंने परीक्षण डेटाबेस को देखने की कोशिश की। मुझे यह नया डेटाबेस (test_project1) दिखाई देता है और सभी योजनाओं को परिभाषित किया जाना चाहिए क्योंकि वे होना चाहिए। लेकिन सभी टेबल खाली हैं।परीक्षण के दौरान Django टेस्ट डेटाबेस खाली दिखता है

मुझे पता है कि टेबल खाली नहीं हैं: - मैंने स्थिरता का उपयोग किया और कुछ परीक्षण पहले ही भाग गए और डेटा लौटा दिया। - एक पोस्ट टेस्ट बनाया गया नया उपयोगकर्ता 201 स्टेटस कोड लौटा।

और फिर भी, जब मैं डेटाबेस को pgAdmin3 या psql के साथ एक्सेस करने का प्रयास करता हूं तो मुझे कोई डेटा दिखाई नहीं देता है।

कोई विचार क्या हो रहा है? क्या डीजेंगो का उपयोग करने वाले किसी प्रकार का परिष्कृत नकदी तंत्र है?

उत्तर

10

Django का TestCasewrapping every test in its own transaction है। इसलिए जब भी आप ORM के माध्यम से अनुरोध करते हैं तो आपका डेटाबेस उपयोग नहीं किया जा रहा है।

+0

धन्यवाद। बस यह सुनिश्चित करना चाहता था कि मैं इसे खो नहीं रहा हूं ... :-) – Uzi

+5

यदि आप लेनदेन को अक्षम करना चाहते हैं तो आप टेस्टकेस के बजाय अस्थायी रूप से लेनदेन टेस्टकेस से प्राप्त कर सकते हैं। यह थोड़ा उलझन में है: टेस्टकेस लेनदेन टेस्टकेस से विरासत में है, लेकिन "लेकिन लेनदेन के साथ हर परीक्षण को घेरता है, बंदर-पैच वास्तविक लेनदेन प्रबंधन दिनचर्या कुछ भी नहीं करने के लिए ..."। हालांकि यह काम करता है, और डीबगिंग के लिए बहुत उपयोगी है। हाँ, मेरे पास वही था, "क्या मैं इसे खो रहा हूं?" पल। ट्रांज़ेक्शनटेस्टकेस की बजाय टेस्टकेस का उपयोग करने का कारण यह है कि लेनदेन को वापस लेना टेबल को छोटा करने से तेज़ है। –

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