কম্পিউটার টিউটোরিয়াল

পাইথনে unittest মডিউল ব্যবহার করে ইউনিট টেস্টিং


এই টিউটোরিয়ালে, আমরা বিল্ট-ইন unittest মডিউল ব্যবহার করে ইউনিট টেস্টিং শিখব। সফটওয়্যার ডেভেলপমেন্টে টেস্টিং অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে। প্রোডাকশনে যাওয়ার আগেই সমস্যাগুলো জানা যায়।

আমরা পাইথনের বিল্ট-ইন মডিউল unittest ব্যবহার করে টেস্টিংয়ের বেসিক শিখব। টিউটোরিয়াল শুরু করা যাক।

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

লগইন সিস্টেম কে উদাহরণ হিসেবে নিলে। লগইন ফর্মের প্রতিটি ফিল্ড একটি ইউনিট/কম্পোনেন্ট। এবং সেই ইউনিট/কম্পোনেন্টের কার্যকারিতা টেস্ট করা ही ইউনিট টেস্টিং।

উদাহরণ

unittest ফ্রেমওয়ার্কের বেসিক স্ট্রাকচার দেখি।

# unittest মডিউল ইমপোর্ট
import unittest

# unittest 'test' দিয়ে শুরু হওয়া সকল মেথড টেস্ট করে
class SampleTest(unittest.TestCase):
    # True বা False রিটার্ন করে
    def test(self):
        self.assertTrue(True)

# টেস্ট রান
unittest.main()

আউটপুট

উপরোক্ত প্রোগ্রাম রান করলে নিচের ফলাফল পাবেন:

----------------------------------------------------------------------
Ran 1 test in 0.001s
OK

২. স্ট্রিং মেথড টেস্ট করা

এখন নমুনা টেস্ট কেস দিয়ে বিভিন্ন স্ট্রিং মেথড টেস্ট করব। মনে রাখবেন মেথডের নাম অবশ্যই test দিয়ে শুরু হতে হবে।

প্রতিটি মেথডের সংক্ষিপ্ত পরিচিতি নিচে দেওয়া হলো।

  • test_string_equality

    • unittest.TestCase-এর assertEqual মেথড ব্যবহার করে দুটি স্ট্রিং সমান কিনা টেস্ট করে।

  • test_string_case

    • unittest.TestCase-এর assertEqual মেথড ব্যবহার করে দুটি স্ট্রিং-এর কেস সমান কিনা টেস্ট করে।

  • test_is_string_upper

    • unittest.TestCase-এর assertTrue এবং assertFalse মেথড ব্যবহার করে স্ট্রিং আপারকেস কিনা টেস্ট করে।

উদাহরণ

# unittest মডিউল ইমপোর্ট
import unittest

class TestingStringMethods(unittest.TestCase):
    # স্ট্রিং সমানতা
    def test_string_equality(self):
        # দুটি আর্গুমেন্ট সমান হলে সাকসেস
        self.assertEqual('ttp' * 5, 'ttpttpttpttpttp')

    # দুটি স্ট্রিং তুলনা
    def test_string_case(self):
        # দুটি আর্গুমেন্ট সমান হলে সাকসেস
        self.assertEqual('tutorialspoint'.upper(), 'TUTORIALSPOINT')

    # স্ট্রিং আপারকেস কিনা চেক
    def test_is_string_upper(self):
        # স্টেটমেন্ট True কিনা চেক করার জন্য assertTrue
        # এক্সপ্রেশনটির ফলাফল True হলে টেস্ট পাস
        self.assertTrue('TUTORIALSPOINT'.isupper())
        # স্টেটমেন্ট False কিনা চেক করার জন্য assertFalse
        # এক্সপ্রেশনটির ফলাফল False হলে টেস্ট পাস
        self.assertFalse('TUTORIALSpoint'.isupper())

# টেস্টগুলো রান
unittest.main()

আউটপুট

সব টেস্ট কেস পাস করলে নিচের ফলাফল পাবেন:

...
----------------------------------------------------------------------
Ran 3 tests in 0.001s
OK

উদাহরণ

নিচের প্রোগ্রাম রান করে ফেলড টেস্ট কেসের আউটপুট দেখুন।

# unittest মডিউল ইমপোর্ট
import unittest

class TestingStringMethods(unittest.TestCase):
    # স্ট্রিং সমানতা
    def test_string_equality(self):
        self.assertEqual('ttp' * 5, 'ttpttpttpttpttp')

    # দুটি স্ট্রিং তুলনা
    def test_string_case(self):
        self.assertEqual('tutorialspoint'.upper(), 'TUTORIALSPOINT')

    # স্ট্রিং আপারকেস কিনা চেক
    def test_is_string_upper(self):
        self.assertTrue('TUTORIALSPOINt'.isupper())  # এখানে 't' ছোট হাতের
        self.assertFalse('TUTORIALSpoint'.isupper())

# টেস্টগুলো রান
unittest.main()

আউটপুট

উপরোক্ত প্রোগ্রাম রান করলে নিচের ফলাফল পাবেন:

======================================================================
FAIL: test_is_string_upper (__main__.TestingStringMethods)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "p:/Python Work/Stopwatch/practice.py", line 21, in test_is_string_upper
    self.assertTrue('TUTORIALSPOINt'.isupper())
AssertionError: False is not true
----------------------------------------------------------------------
Ran 3 tests in 0.016s
FAILED (failures=1)

সব টেস্ট কেসের মাঝে যদি একটি ফেল হয়, তবে ফেল মেসেজ দেখাবে।

উপসংহার

এই টিউটোরিয়াল সম্পর্কে আপনার কোনো প্রশ্ন থাকলে কমেন্ট সেকশনে জানাতে পারেন।


  1. পাইথনে unittest মডিউল দিয়ে ইউনিট টেস্টিং

  2. পাইথনে Unittest মডিউল ব্যবহার করে ইউনিট টেস্টিং

  3. পাইথনে WhatsApp অটোমেশন (WhatsApp using Python)

  4. পাইথনে cx_Freeze ব্যবহার করে এক্সিকিউটেবল বানানো