python - Django परीक्षण धावक परीक्षण नहीं मिल रहा है




unit-testing (11)

इस पर काम किया।

यह पता चला है कि मैंने django-admin.py startproject pyDietTracker किया था, लेकिन python manage.py startapp myApp । वापस जाने और ऐसा करने के बाद, इसने प्रलेखित के रूप में काम किया। ऐसा प्रतीत होता है कि मुझे पढ़ने और Django में एक साइट और ऐप के बीच अंतर के बारे में जानने के लिए बहुत कुछ है।

आपकी मदद के लिए धन्यवाद S.Lott और एमिल स्टेंस्ट्रोम। काश मैं आपके दोनों उत्तर स्वीकार कर सकता क्योंकि वे दोनों एक-दूसरे के मददगार थे।

अधिकांश महत्वपूर्ण सबक टेस्ट केवल ऐप के स्तर पर काम करते हैं न कि साइट के स्तर पर

मैं पायथन और Django दोनों के लिए नया हूं और मैं एक आहार प्रबंधन साइट बनाकर सीख रहा हूं लेकिन मुझे अपनी इकाई परीक्षण चलाने के लिए पूरी तरह से हरा दिया गया है। सभी डॉक्स और ब्लॉग मैंने पाया है कि जब तक यह टेस्टोस्टेरोन से खोजे जाने योग्य है, तब तक टेस्टशो एक ही फ़ोल्डर में है मॉडलशो और आपकी टेस्ट क्लास सबकेसेस टेस्टकेस, यह सब अपने आप ही उठ जाना चाहिए। मेरे लिए यह तब काम नहीं कर रहा है, जब मैं manage.py test <myapp> चला रहा हूँ, इसमें manage.py test <myapp> नहीं है।

मैंने अपने सभी परीक्षणों को अपने पैकेज में शुरू किया लेकिन इसे सभी परीक्षणों के लिए सरल बना दिया है। वर्तमान परीक्षण Oracle की तरह दिखता है:

import unittest
from pyDietTracker.models import Weight
from pyDietTracker.weight.DisplayDataAdapters import DisplayWeight

class TestDisplayWeight(unittest.TestCase):

    def setUp(self):
        pass

    def tearDown(self):
        pass

    def testGetWeightInStone_KG_Correctly_Converted(self):
        weight = Weight()
        weight.weight = 99.8

        testAdapter = DisplayWeight(weight)
        self.assertEquals(testAdapter.GetWeightInStone(), '15 st 10 lb')   

मैंने इसे Django TestCase क्लास के साथ जोड़कर देखा है, लेकिन यह भी काम नहीं किया। मैं Django 1.1.1, पायथन 2.6 का उपयोग कर रहा हूं और स्नो लेपर्ड चला रहा हूं।

मुझे यकीन है कि मैं कुछ बहुत ही बुनियादी और स्पष्ट याद कर रहा हूं, लेकिन मैं अभी काम नहीं कर सकता। कोई विचार?

संपादित करें: एक टिप्पणी के बाद बस एक त्वरित अद्यतन

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'pyDietTracker',
 )

I को चलाने के लिए परीक्षण प्राप्त करने के लिए, मैं manage.py test pyDietTracker रहा हूँ, जो manage.py test pyDietTracker


इस वाक्यविन्यास का उपयोग करना

python manage.py test

इसके बजाय ./manage.py test ने मेरे लिए इस समस्या को हल किया।


ऐसा तब भी होता है जब आपको अपने परीक्षणों में एक सिंटैक्स त्रुटि होती है।


मेरे पास एक ही मुद्दा था लेकिन मेरी समस्या अलग थी।

मैं ओपी के रूप में Ran 0 tests कर रहा था।

लेकिन यह पता चलता है कि आपके परीक्षण वर्ग के अंदर परीक्षण के तरीकों को चलाने के लिए खोजशब्द test से शुरू होना चाहिए

उदाहरण:

from django.test import TestCase


class FooTest(TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    def this_wont_run(self):
        print 'Fail'

    def test_this_will(self):
        print 'Win'

साथ ही आपके परीक्षणों की फाइलों को test कीवर्ड के साथ शुरू करना होगा


मेरे मामले में, ऐप फ़ोल्डर में __init__.py गायब था। इसका परिणाम यह है कि परीक्षण python manage.py test project.app_name साथ चलाया जाएगा, लेकिन python manage.py test साथ नहीं।

project/
  app_name/
    __init__.py   # this was missing

मेरे मामले में, मुझे test_ के साथ अपने कार्य नाम शुरू करने की याद आती है और जब मैं अपना परीक्षण चलाता हूं:

python manage.py test myapp

परिणाम था:

Creating test database for alias 'default'...
System check identified no issues (0 silenced).

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
Destroying test database for alias 'default'...

ऐसा लगता है कि Django मेरे परीक्षणों को पहचान नहीं सकता है!

फिर मैं इस तरह से myproject / myapp / test.py फ़ाइल बदलूँ :

from django.test import TestCase
# Create your tests here.
class apitest(TestCase):

    def test_email(self):
        pass
    def test_secend(self):
        pass

उस परिणाम के बाद:

Creating test database for alias 'default'...
System check identified no issues (0 silenced).
..
----------------------------------------------------------------------
Ran 2 tests in 2.048s

OK
Destroying test database for alias 'default'...

मैं विशिष्ट एप्लिकेशन जैसे उदाहरण के लिए परीक्षण चला सकता हूं

python project/manage.py test app_name

लेकिन जब मैं दौड़ता हूं

python project/manage.py test

0 परीक्षण पाया गया

चित्रा बाहर मैं इसे प्रबंध निर्देशिका के रूप में एक ही निर्देशिका में चलाने की जरूरत है

तो समाधान होगा, सीडी परियोजना निर्देशिका और चलाने के लिए

python manage.py test

मैंने अपने परीक्षण वर्ग में run नामक एक विधि बनाई, जो एक बहुत बुरा विचार था। अजगर देख सकता था कि मैं परीक्षण चलाना चाहता था, लेकिन असमर्थ था। यह समस्या थोड़ी अलग है, लेकिन परिणाम एक ही है - यह ऐसा लगता है जैसे परीक्षण नहीं पाए जा सकते हैं।

ध्यान दें कि निम्न संदेश प्रदर्शित किया गया था: You want to run the existing test: <unittest.runner.TextTestResult run=0 errors=0 failures=0>


यदि आप अपने मुख्य ऐप में एक परीक्षण चलाने की कोशिश कर रहे हैं, जैसे कि my_app / my_app / सुनिश्चित करें कि आपके पास निम्नलिखित जाँच है:

  1. ऐप का नाम settings.py अंदर INSTALLED_APPS में सूचीबद्ध है
  2. सुनिश्चित करें कि settings.py अंदर आपका DATABASES['default'] ठीक से सेट है
  3. एप्लिकेशन में एक models.py (भले ही आप एक का उपयोग नहीं कर रहे हों, कम से कम एक खाली होना आवश्यक है)

यह तब भी हो सकता है जब आप किसी tests.py बजाय एक tests मॉड्यूल का उपयोग कर रहे tests.py । इस मामले में आपको अपने परीक्षण मॉड्यूल के __init__.py में सभी परीक्षण वर्गों को आयात करने की आवश्यकता है, उदाहरण के लिए

tests/
    __init__.py
    somemodule.py

अपने __init__.py अब आपको कुछ इस तरह से somemodule आयात करने की आवश्यकता है:

from .somemodule import *

https://docs.djangoproject.com/en/1.11/topics/testing/overview/ देखें

परीक्षण नहीं चलने का सबसे आम कारण यह है कि आपकी सेटिंग्स सही नहीं हैं, और आपका मॉड्यूल INSTALLED_APPS में नहीं है।

हम unittest.TestCase बजाय django.test.TestCase उपयोग करते हैं। इसमें Client बंडल किया गया है।

https://docs.djangoproject.com/en/1.11/topics/testing/tools/#django.test.TestCase





unit-testing