Django

⌘K
  1. Home
  2. Django
  3. Django তে কিভাবে কাজ করতে...
  4. ইউনিট টেস্টিং

ইউনিট টেস্টিং

ইউনিট টেস্টিং কি?

ইউনিট টেস্টিং কি?

ইউনিট টেস্টিং হল সফ্টওয়্যার ডেভেলপমেন্টের একটি প্রক্রিয়া, যেখানে প্রোগ্রামের সবচেয়ে ছোট যোগ্য অংশগুলি (যেমন ফাংশন, মেথড বা ক্লাস) আলাদা করে পরীক্ষা করা হয় তাদের সঠিকতা নির্ধারণের জন্য। ইউনিট টেস্টিং এর মূল উদ্দেশ্য হল প্রোগ্রামের প্রতিটি অংশ যে ঠিকভাবে কাজ করছে তা নিশ্চিত করা।

ইউনিট টেস্টিং শুরু করার ধাপসমূহ:

ধাপ 1: টেস্ট কেস পরিকল্পনা করা

  • আপনি যে ফাংশন বা মেথডের জন্য টেস্ট কেস লিখতে চান তা নির্বাচন করুন।
  • প্রত্যেক ফাংশনের জন্য কোন কোন ইনপুট দেওয়া হবে এবং তার প্রত্যাশিত আউটপুট কি হবে তা নির্ধারণ করুন।

ধাপ 2: টেস্ট কেস লেখা

  • Django-এ আপনি unittest মডিউল ব্যবহার করে টেস্ট কেস লিখতে পারেন।
  • একটি টেস্ট ক্লাস তৈরি করুন যা unittest.TestCase থেকে ইনহেরিট করে।
  • প্রতিটি টেস্ট মেথডের নাম test_ দিয়ে শুরু করুন।

ধাপ 3: টেস্ট রান করা

  • Django প্রকল্পের রুট ডিরেক্টরি থেকে টার্মিনালে python manage.py test কমান্ড চালান।
  • Django আপনার লিখিত সব টেস্ট কেস খুঁজে বের করে এবং তাদের রান করে।

ধাপ 4: টেস্ট রিজাল্ট বিশ্লেষণ করা

  • টেস্ট রানের পর, আপনি যে রিজাল্ট পাবেন তা দেখুন।
  • যদি কোনো টেস্ট ব্যর্থ হয়, তার কারণ বিশ্লেষণ করুন এবং প্রয়োজনে কোড বা টেস্ট কেস সংশোধন করুন।

ধাপ 5: টেস্ট কভারেজ বৃদ্ধি করা

  • আপনার প্রোগ্রামের সব ফিচার এবং এজ কেসগুলি কভার করার জন্য আরও টেস্ট কেস লিখুন।
  • উচ্চ টেস্ট কভারেজ নিশ্চিত করে যে আপনার কোড বিভিন্ন পরিস্থিতিতে ঠিকভাবে কাজ করবে।

এই ধাপগুলি অনুসরণ করে আপনি Django এবং Django REST Framework প্রজেক্টে ইউনিট টেস্টিং শুরু করতে পারেন। টেস্টিং হল একটি অত্যন্ত গুরুত্বপূর্ণ অংশ যা সফটওয়্যার ডেভেলপমেন্টে বাগ খুঁজে বের করতে এবং আপনার অ্যাপ্লিকেশনের মান নিশ্চিত করতে সাহায্য করে।

জাঙ্গো ইউনিট টেস্টিং লাইব্রেরি

ডিজাঙ্গো ইউনিট টেস্টিং এর জন্য পাইথনের স্ট্যান্ডার্ড লাইব্রেরির unittest মডিউলটি ব্যবহার করে। এই মডিউলটি পরীক্ষার জন্য বিভিন্ন ধরনের টুলস প্রদান করে, যা ডিজাঙ্গো অ্যাপ্লিকেশনের জন্য শক্তিশালী টেস্ট স্যুট তৈরি করা সহজ করে দেয়। ডিজাঙ্গো unittest-এর ক্ষমতা বাড়ায় এর নিজস্ব ক্লাস এবং ফাংশনগুলির মাধ্যমে, যা ডিজাঙ্গোর কম্পোনেন্টগুলি যেমন মডেল, ভিউ, ফর্ম, এবং টেমপ্লেটগুলির টেস্টিং আরও কার্যকর করে।

আপনি যখন একটি ডিজাঙ্গো প্রজেক্ট তৈরি করেন, তখন আপনি টেস্ট কেস লিখতে পারেন এমন একটি ক্লাস তৈরি করে, যা django.test.TestCase থেকে উত্তরাধিকার গ্রহণ করে, যা আবার unittest.TestCase-এ উত্তরাধিকার গ্রহণ করে। এই সাবক্লাসটি ডিজাঙ্গো-নির্দিষ্ট অতিরিক্ত কার্যকারিতা প্রদান করে, যেমন টেস্ট ডাটাবেস সেটআপ এবং ডিজাঙ্গোর HTTP ক্লায়েন্ট টেস্ট করার ক্ষমতা। এখানে একটি ডিজাঙ্গো অ্যাপের জন্য সাধারণ মডেলের ইউনিট টেস্ট লেখার একটি বেসিক উদাহরণ দেওয়া হলো:

from django.test import TestCase
from .models import MyModel

class MyModelTestCase(TestCase):
    def setUp(self):
        MyModel.objects.create(name="টেস্ট নাম")

    def test_model_str(self):
        test_name = MyModel.objects.get(name="টেস্ট নাম")
        self.assertEqual(test_name.__str__(), "টেস্ট নাম")
Python

ইউনিট টেস্টিং বেসিক উদাহরণ প্রাক্টিক্যাল

Step 1: Creating the Model

First, define the Book model in your Django app’s models.py file. This model will have two fields: title and author.

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)

    def __str__(self):
        # String representation of the Book instance
        return f"{self.title} by {self.author}"
Python

Step 2: Registering the Model with the Admin Site (Optional)

To interact with this model through Django’s admin interface, register it in the admin.py file of your app.

from django.contrib import admin
from .models import Book

admin.site.register(Book)
Python

Step 3: Creating a Migration

After defining your model, you need to create a migration for it:

python manage.py makemigrations
Python

Step 4: Applying the Migration

Apply the migration to your database:

python manage.py migrate
Python

Step 5: Writing a Test Case

Now, let’s write a unit test for our Book model. Create a file named tests.py in your Django app directory if it doesn’t already exist. Then, add the following code to test the creation of a Book instance and its string representation.

from django.test import TestCase
from .models import Book

class BookCRUDTest(TestCase):
    def setUp(self):
        # This method will run before every test method to set up any books needed for the tests
        self.book = Book.objects.create(title="The Little Prince", author="Antoine de Saint-Exupéry")

    def test_create_book(self):
        # Test creating a new book
        book = Book.objects.create(title="1984", author="George Orwell")
        self.assertEqual(Book.objects.count(), 2)  # Including the one from setUp

    def test_read_book(self):
        # Test reading an existing book
        book = Book.objects.get(title="The Little Prince")
        self.assertEqual(book.author, "Antoine de Saint-Exupéry")

    def test_update_book(self):
        # Test updating an existing book's title
        self.book.title = "Le Petit Prince"
        self.book.save()
        updated_book = Book.objects.get(id=self.book.id)
        self.assertEqual(updated_book.title, "Le Petit Prince")

    def test_delete_book(self):
        # Test deleting a book
        book_id = self.book.id
        self.book.delete()
        with self.assertRaises(Book.DoesNotExist):
            Book.objects.get(id=book_id)
Python

Running the Tests

To run these tests, execute the following command in your terminal:

python manage.py test
Python

How can we help?