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

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


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

ইউনিট টেস্টে আমরা 다양한 অবজেক্ট-ওরিয়েন্টেড কনসেপ্ট ব্যবহার করি। এখানে আমরা কিছু প্রধান কনসেপ্ট আলোচনা করব।

  • Testcase - এটি একটি নির্দিষ্ট ইনপুট সেট অনুযায়ী রেসপন্স-স্পেসিফিক বেস ক্লাস। এটি বাস্তবায়ন করার জন্য ইউনিট টেস্টের বেস ক্লাস অর্থাৎ "TestCase" ব্যবহার করা হয়।

  • Testsuite - এটি টেস্ট কেসগুলো একসাথে ক্লাব করে একসাথে এক্সিকিউট করতে ব্যবহৃত হয়।

  • Testrunner - এটি আউটকাম-ভিত্তিক এক্সিকিউশন অনুসরণ করে। টাস্ক এক্সিকিউট করার পর ফলাফল প্রদর্শনে এটি জড়িত।

  • Test fixture - এটি সংশ্লিষ্ট পরিবেশে টেস্ট কেসের জন্য একটি বেসলাইন হিসেবে কাজ করে।

এখন একটি বেসিক উদাহরণ দেখি কিভাবে ইউনিট টেস্টিং কাজ করে।

উদাহরণ

import unittest

class TestStringMethods(unittest.TestCase):
    def test_upper(self):
        self.assertEqual('TUTOR'.lower(), 'tutor')
    def test_islower(self):
        self.assertTrue('tutor'.islower())
        self.assertFalse('Tutor'.islower())

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

আউটপুট

...
---------------------------------------------------------------
Ran 2 tests in 0.000s
OK

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

এখানে আমরা ইউনিট টেস্ট ক্লাসকে সিঙ্গেল ইনহেরিটেন্সের মাধ্যমে এক্সটেন্ড করেছি। এখানে বিল্ট-ইন মেথড যেমন assertEqual(), assertTrue() এবং assertFalse() ব্যবহার করা হয়েছে।

assertEqual() আউটপুটকে রেজাল্টের সাথে ভ্যালিডেট/তুলনা করতে ব্যবহৃত হয়।

assertTrue() দেওয়া শর্তটি সত্য কিনা তা যাচাই করতে ব্যবহৃত হয়।

assertFalse() দেওয়া শর্তটি মিথ্যা কিনা তা যাচাই করতে ব্যবহৃত হয়।

উপরের কোডের আউটপুট তিন রকম হতে পারে:

OK – এটি ইঙ্গিত করে যে সকল জেনারেটেড টেস্ট সফলভাবে এক্সিকিউট হয়েছে।

FAIL – এটি ইঙ্গিত করে যে কোনো একটি টেস্ট কেস ব্যর্থ হয়েছে এবং AssertionError এক্সেপশন উঠেছে।

ERROR – এটি ইঙ্গিত করে যে টেস্টটি একটি এক্সেপশন/এরর উত্পন্ন করেছে।

আমরা @unittest.skip(<reason>) ডেকোরেটর ব্যবহার করতে পারি।

উদাহরণ

import unittest

class TestString(unittest.TestCase):
    @unittest.skip("check skipped tests")
    def test_upper(self):
        self.assertEqual('TUTOR'.lower(), 'tutor')
    def test_islower(self):
        self.assertTrue('tutor'.islower())
        self.assertFalse('Tutor'.islower())

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

আউটপুট

...
---------------------------------------------------------------
Ran 2 tests in 0.000s
OK (skipped=2)

উপসংহার

এই নিবন্ধে আমরা পাইথন ৩.x-এ unittest মডিউল ব্যবহার করে ইউনিট টেস্টিং শিখেছি।

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

  2. পাইথনে কনওয়ের গেম অফ লাইফ (Conway's Game of Life)

  3. পাইথনে লিনাক্স টার্মিনালে ফরম্যাটেড টেক্সট প্রিন্ট করা

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