Test Coverage এবং Mocking

Testing এবং Debugging - চেরিপাই (CherryPy) - Web Development

249

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


CherryPy অ্যাপ্লিকেশনের জন্য Test Coverage

Test Coverage হল একটি মেট্রিক, যা পরীক্ষা করে যে আপনার কোডের কত অংশ টেস্ট করা হয়েছে এবং কত অংশ এখনও পরীক্ষা করা হয়নি। CherryPy অ্যাপ্লিকেশনের জন্য টেস্ট কভারেজ নিশ্চিত করার জন্য আপনি unittest, pytest বা nose ব্যবহার করতে পারেন।

উদাহরণ: CherryPy অ্যাপ্লিকেশনের জন্য Unit Test এবং Test Coverage

  1. unittest মডিউল ব্যবহার করে CherryPy অ্যাপ্লিকেশন টেস্ট করা:
import cherrypy
import unittest

# অ্যাপ্লিকেশন ক্লাস
class MyApp:
    @cherrypy.expose
    def index(self):
        return "স্বাগতম CherryPy অ্যাপে!"

# ইউনিট টেস্ট ক্লাস
class TestMyApp(unittest.TestCase):
    def setUp(self):
        self.app = MyApp()

    def test_index(self):
        # 'index' মেথডের আউটপুট যাচাই করা
        self.assertEqual(self.app.index(), "স্বাগতম CherryPy অ্যাপে!")

if __name__ == '__main__':
    unittest.main()

এখানে, index() মেথডের জন্য একটি সহজ unit test তৈরি করা হয়েছে যা পরীক্ষা করে যে মেথডটি সঠিকভাবে রিটার্ন করছে কিনা।

  1. Test Coverage নিশ্চিত করা: Test coverage নিশ্চিত করতে coverage.py ব্যবহার করা যেতে পারে। এটি আপনার কোডের কতটা অংশ টেস্ট করা হয়েছে তা রিপোর্ট করবে।

    coverage.py ইনস্টল করতে:

    pip install coverage
    

    টেস্ট কভারেজ রান করতে:

    coverage run -m unittest discover
    coverage report
    

Mocking (মকিং)

Mocking হল একটি টেস্টিং কৌশল যা দিয়ে আপনি বাহ্যিক নির্ভরতা (যেমন ডাটাবেস, ওয়েব সার্ভিস কল ইত্যাদি) সিমুলেট করে পরীক্ষার জন্য মক অবজেক্ট তৈরি করতে পারেন। CherryPy অ্যাপ্লিকেশনগুলিতে বাহ্যিক কলগুলো যেমন ডাটাবেস বা API কলগুলোর সাথে সরাসরি টেস্টিং করার চেয়ে মকিংয়ের মাধ্যমে পরীক্ষাগুলি আরও সহজ ও দ্রুত করা যায়।

উদাহরণ: Mocking ব্যবহার করে Unit Test করা

unittest.mock মডিউল ব্যবহার করে আপনি সহজেই বাহ্যিক নির্ভরতাগুলোর মক তৈরি করতে পারেন।

import cherrypy
import unittest
from unittest.mock import patch

class MyApp:
    @cherrypy.expose
    def index(self):
        return self.get_data()

    def get_data(self):
        # এখানে কোনো বাহ্যিক কল বা ডাটাবেস কোড থাকবে
        return "ডাটাবেস থেকে ডেটা"

# ইউনিট টেস্ট ক্লাস
class TestMyApp(unittest.TestCase):
    @patch.object(MyApp, 'get_data', return_value="Mocked Data")
    def test_index(self, mock_get_data):
        app = MyApp()
        self.assertEqual(app.index(), "Mocked Data")
        mock_get_data.assert_called_once()  # মক ফাংশন একবার কল হয়েছে কিনা যাচাই

if __name__ == '__main__':
    unittest.main()

এখানে:

  • patch.object ব্যবহার করে get_data মেথডকে মক করা হয়েছে, যাতে আসল ডাটাবেস কল বা বাহ্যিক নির্ভরতা না চালানো হয়।
  • টেস্ট চলাকালীন "Mocked Data" রিটার্ন করা হয়।

CherryPy অ্যাপ্লিকেশনের জন্য Test Coverage এবং Mocking ব্যবহার

CherryPy অ্যাপ্লিকেশনের টেস্টিংয়ে আপনি pytest, unittest, এবং mocking এর মাধ্যমে এমনভাবে টেস্ট করতে পারেন যাতে আপনার কোডের কভারেজ এবং কার্যকারিতা নিশ্চিত হয়। CherryPy অ্যাপ্লিকেশনের জন্য টেস্ট কভারেজ পরিচালনা করার জন্য coverage.py এবং মকিংয়ের মাধ্যমে বাহ্যিক নির্ভরতা ছাড়া আপনি টেস্টগুলো দ্রুত চালাতে পারবেন।

উদাহরণ: CherryPy অ্যাপ্লিকেশন টেস্টে Mocking

import cherrypy
import unittest
from unittest.mock import patch

# CherryPy অ্যাপ্লিকেশন
class MyApp:
    @cherrypy.expose
    def index(self):
        # ডাটাবেস কলের মকিং
        return self.get_data()

    def get_data(self):
        # ডাটাবেস বা API কল
        return "ডাটাবেস থেকে আসল ডেটা"

# ইউনিট টেস্ট ক্লাস
class TestMyApp(unittest.TestCase):
    @patch.object(MyApp, 'get_data', return_value="Mocked Data")  # মক করা হচ্ছে
    def test_index(self, mock_get_data):
        app = MyApp()
        self.assertEqual(app.index(), "Mocked Data")
        mock_get_data.assert_called_once()  # মক ফাংশন একবার কল হয়েছে কিনা যাচাই

if __name__ == '__main__':
    unittest.main()

এখানে get_data মেথডের জন্য মক তৈরি করা হয়েছে, যাতে অ্যাস্ল ফাংশনটি আসল বাহ্যিক কল না করে, বরং মক ডেটা রিটার্ন করে।


CherryPy অ্যাপ্লিকেশনের জন্য Test Coverage এবং Mocking হল কোডের সঠিকতা এবং কার্যকারিতা নিশ্চিত করার জন্য অত্যন্ত গুরুত্বপূর্ণ টুলস। CherryPy অ্যাপ্লিকেশনগুলোকে টেস্ট করা সহজ এবং কার্যকরী করার জন্য:

  1. Test Coverage নিশ্চিত করতে coverage.py ব্যবহার করা যেতে পারে।
  2. Mocking ব্যবহার করে বাহ্যিক নির্ভরতাগুলির মক তৈরি করা যায় এবং ইউনিট টেস্ট দ্রুত এবং নির্ভরযোগ্যভাবে চালানো যায়।

এই পদ্ধতিগুলির মাধ্যমে আপনি আপনার CherryPy অ্যাপ্লিকেশনের টেস্টিং এবং মেইনটেনেন্সকে আরও সহজ এবং কার্যকর করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...