मेरे Django प्रोजेक्ट में मेरे पास 'कोर' नामक एक ऐप है जिसमें मेरे सभी पुन: प्रयोज्य मॉडल मिक्सिन/अमूर्त मॉडल (behaviors.py), मॉडल (models.py), विचार (views.py) और हेल्पर्स फ़ंक्शंस (utils.py) शामिल हैं:

core/
    __init__.py
    behaviors.py  
    models.py
    utils.py
    views.py

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

अब मैं अनिश्चित हूं कि मुझे व्यवहार में निहित सार मॉडल का परीक्षण कैसे करना चाहिए। उदाहरण के लिए, मेरे पास यह मॉडल मिक्सिन है:

import uuid as uuid_lib

from django.db import models


class UniversallyUniqueIdentifiable(models.Model):
    uuid = models.UUIDField(
    db_index=True,
    default=uuid_lib.uuid4,
    editable=False
        )

    class Meta:
        abstract = True

आप एक अमूर्त मॉडल का परीक्षण कैसे कर सकते हैं? एक लेख में मैं मोटे मॉडल के बारे में सीखता था, लेखक सिर्फ परीक्षण करता है मॉडल जिसमें उन्होंने अमूर्त मॉडल का इस्तेमाल किया। लेकिन यह मेरे लिए बहुत शुष्क नहीं लगता है क्योंकि इसका मतलब यह होगा कि मुझे प्रत्येक मॉडल में यूयूआईडी को जोड़ने का परीक्षण करना होगा जिसका मैं उपयोग करता हूं। इसे करने का कोई बेहतर तरीका है?

2
J. Hesters 9 मई 2018, 10:58

1 उत्तर

सबसे बढ़िया उत्तर

कोड के नीचे प्रयास करें

from django.db import connection
from django.db.models.base import ModelBase
from django.test import TestCase
from .models import UniversallyUniqueIdentifiable

import uuid    


class TestUniversallyUniqueIdentifiable(TestCase):

    model = UniversallyUniqueIdentifiable

    def setUp(self):
        # Create a dummy model
        self.model = ModelBase(
            '__TestModel__' + self.model.__name__, (self.model,),
            {'__module__': self.model.__module__}
        )

        # Create the schema for our test model
        with connection.schema_editor() as schema_editor:
            schema_editor.create_model(self.model)

    def test_mytest_case(self):

        self.model.objects.create(uuid=uuid.uuid4())
        self.assertEqual(self.model.objects.count(), 1) 

    def tearDown(self):
        # Delete the schema for the test model
        with connection.schema_editor() as schema_editor:
            schema_editor.delete_model(self.model)
2
anjaneyulubatta505 9 मई 2018, 16:46