Django views.py में doctests

वोट
23

Django 1.4 परीक्षणों पर प्रलेखन राज्यों:

किसी दिए गए Django आवेदन के लिए, परीक्षण धावक दो स्थानों पर doctests के लिए लग रहा है:

  • models.pyफ़ाइल। आपने मॉड्यूल स्तरीय doctests और / या व्यक्तिगत मॉडलों के लिए एक doctest परिभाषित कर सकते हैं। यह मॉडल docstrings में मॉड्यूल docstring और मॉडल स्तरीय doctests में अनुप्रयोग स्तर doctests डाल करने के लिए आम बात है।

  • एक फाइल बुलाया tests.pyआवेदन निर्देशिका में - यानी, निर्देशिका कि models.py रखती है। इस फ़ाइल में किसी भी और सभी doctests आप लिखने के लिए जरूरी है कि मॉडल से संबंधित नहीं हैं चाहते हैं के लिए एक हुक है।

जिज्ञासा से बाहर मैं जानना चाहता हूँ क्यों Django के testrunner में doctests तक ही सीमित है करना चाहते हैं models.py, लेकिन और अधिक व्यावहारिक रूप से मैं जानता हूँ कि कैसे एक (उदाहरण के लिए) को शामिल करने के testrunner के doctests का विस्तार कर सकता है करना चाहते हैं views.pyजब चल रहा है और अन्य मॉड्यूल manage.py test

मैं किसी भी इनपुट के लिए आभारी होंगे।

धन्यवाद।

ब्रायन

04/03/2010 को 14:39
उपयोगकर्ता
अन्य भाषाओं में...                            


7 जवाब

वोट
1

आप अपनी खुद की लिखने के लिए कोशिश कर सकते testrunnerहैं और देखते हैं, यदि आप अन्य फ़ाइलों डॉक परीक्षण के लिए जांच की जानी शामिल कर सकते हैं।

http://docs.djangoproject.com/en/dev/topics/testing/#defining-a-test-runner

04/03/2010 को 15:33
का स्रोत उपयोगकर्ता

वोट
5

प्लगइन Django (Django-समझदार परीक्षण या Django-नाक) के लिए साथ nosetests का प्रयोग करें और का उपयोग --with-doctest झंडा

04/03/2010 को 17:35
का स्रोत उपयोगकर्ता

वोट
2

Django के देशी परीक्षण प्रणाली पर आधारित है unittestपैकेज। तो यह रूप में शक्तिशाली रूप में यह हो सकता है नहीं है।

मैं तुम्हें उपयोग करने की अनुशंसा नाक वह यह है कि पार्श्व-संगत unittestस्टेरॉयड पर। इसके साथ प्रयोग करें साथ Django परीक्षण धावक नाक का उपयोग करता है । आप का उपयोग कर कस्टम परीक्षण स्थानों पर यह इशारा करते हुए सहित कई मायनों में नाक अनुकूलित कर सकते हैं -mझंडा।

05/03/2010 को 10:11
का स्रोत उपयोगकर्ता

वोट
22

आप संपादन जो परिभाषित करता है क्या परीक्षण Django परीक्षण धावक द्वारा चलाया जाएगा tests.py में सूट () फ़ंक्शन जोड़ने / ऐसा कर सकते हैं।

import unittest
import doctest
from project import views

def suite():
    suite = unittest.TestSuite()
    suite.addTest(doctest.DocTestSuite(views))
    return suite

तो बस हमेशा की तरह अपने परीक्षण चलाने के लिए और आप views.py समय में अपने doctests देखना चाहिए।

$ python manage.py test project

इस में और अधिक विस्तार से वर्णन किया गया है Django परीक्षण प्रलेखन

जब आप अपने परीक्षण चलाने, परीक्षण उपयोगिता के डिफ़ॉल्ट व्यवहार को सभी प्रकार के परीक्षण (जो है, unittest.TestCase के उपवर्ग) models.py और tests.py में मिल जाए, स्वचालित रूप से उन परीक्षण मामलों से बाहर टेस्ट स्वीट का निर्माण करना है, और उस सूट चलाते हैं।

एक मॉड्यूल के लिए टेस्ट स्वीट परिभाषित करने के लिए एक दूसरे तरीका नहीं है: यदि आप एक समारोह सूट () या तो models.py या tests.py में कहा जाता है परिभाषित, जैंगो परीक्षण धावक कि मॉड्यूल के लिए टेस्ट स्वीट के निर्माण के लिए है कि समारोह का प्रयोग करेंगे। इस इकाई के परीक्षण के लिए सुझाव संगठन इस प्रकार है। कैसे एक जटिल टेस्ट स्वीट का निर्माण करने के बारे में अधिक जानकारी के लिए अजगर दस्तावेज़ देखें।

हालांकि, अपने खुद के टेस्ट स्वीट के निर्माण का मतलब है कि Django परीक्षण धावक स्वचालित रूप से किसी भी परीक्षण आप tests.py में नहीं चलेंगे को ध्यान में रखना। उदाहरण के लिए आप मैन्युअल रूप से अपने सुइट में इन्हें जोड़ने के लिए, होगा

import unittest
import doctest
from project import views

class FooTestCase(unittest.TestCase):
    def testFoo(self):
        self.assertEquals('foo', 'bar')

def suite():
    suite = unittest.TestSuite()
    suite.addTest(doctest.DocTestSuite(views))
    suite.addTest(unittest.TestLoader().loadTestsFromTestCase(FooTestCase))
    return suite
12/06/2010 को 19:59
का स्रोत उपयोगकर्ता

वोट
7

यह मेरा है tests/__init__.pyकार्यान्वयन, के आधार पर जेसी शीह जवाब :

import doctest
import unittest

list_of_doctests = [
    'myapp.views.myview',
    'myapp.forms.myform',
]
list_of_unittests = [
    'sometestshere',  # This file is myapp/tests/sometestshere.py
    'moretestshere',  # This file is myapp/tests/moretestshere.py
    'myapp.tests.othertest',  # Absolute paths also work.
]

def suite():
    suite = unittest.TestSuite()
    for t in list_of_doctests:
        suite.addTest(doctest.DocTestSuite(
            __import__(t, globals(), locals(), fromlist=["*"])
        ))
    for t in list_of_unittests:
        suite.addTest(unittest.TestLoader().loadTestsFromModule(
            __import__(t, globals(), locals(), fromlist=["*"])
        ))
    return suite

असल में, इस समाधान मनमाना "फ़ाइलें" (वास्तव में, मॉड्यूल) टेस्ट स्वीट को जोड़ने की अनुमति देता है। यह अलग फ़ाइलों में इकाई परीक्षण बंटवारे की अनुमति देता है, और किसी भी मॉड्यूल doctests शामिल है, की अनुमति देता है। बस इस फ़ाइल के शीर्ष पर उचित सूची में मॉड्यूल का नाम जोड़ने।

27/01/2011 को 11:28
का स्रोत उपयोगकर्ता

वोट
2

मैं एक GitHub सार देता है कि आप अपनी परियोजना में किसी भी फाइल या मॉड्यूल में परीक्षण चलाने तैनात। विशिष्ट मॉड्यूल और फाइलों से चल रहा है doctests

16/02/2011 को 07:09
का स्रोत उपयोगकर्ता

वोट
15

हालात है Django 1.6 में बदल :

Doctests अब अपने आप की खोज की जाएगी। अपने परीक्षण के कमरे में doctests एकीकृत करने के लिए, का पालन करें अजगर दस्तावेज में सिफारिशें

इसलिए सभी मैं अपने आप को क्या करना था (my_app / tests.py में) था:

import unittest
import doctest
from my_app import views

def load_tests(loader, tests, ignore):
    tests.addTests(doctest.DocTestSuite(views))
    return tests
13/12/2013 को 08:39
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more