পাইথনে unittest বলতে কী বুঝায়? assertEqual, assertTrue এই ফাংশন গুলোর কাজ কী?

asked 14 Jan '15, 11:36

mahbub's gravatar image

mahbub
9129

edited 23 Oct '15, 13:59

Tamim%20Shahriar%20Subeen's gravatar image

Tamim Shahriar Subeen ♦♦
6.2k21128


Unit test হচ্ছে কম্পিউটার প্রোগ্রাম টেস্ট করার একটি পদ্ধতি। Unit test মূলত ডেভলাপারই করে থাকে তার সফটওয়্যারের বিভিন্ন অংশের functionality টেস্ট করার জন্য।
python এ Unit test করার জন্য একটি framework হচ্ছে unittest. এর সাহায্যে কোন পাইথন প্রোগ্রামের Unit test করে ফেলা যায়। যেমন আমি যদি পাইথনে একটি প্রোগ্রাম লিখি যেটি আমাকে বলে দিবে যে একটি নাম্বার জোড়/বিজোড়?

def even_odd(number):
    if isinstance(number, int):
        if number % 2 == 0:
            return "Even"
        return "Odd"
    return "Enter a number"

এই ফাংশনটি number নামে একটি argument নিবে এবং যদি তা ইন্টিজার হয় তবে চেক করবে তা জোড় নাকি বিজোড়। প্রতিবারই এই ফাংশন থেকে একটি string output হবে। এটির জন্য একটি Unit test লেখা যায়।

from unittest_evenodd import even_odd
import unittest

test_values = [
    (1, "Odd"),
    (2, "Even"),
    (0, "Even"),
    (3254, "Even"),
    (-7, "Odd"),
    (-96541, "Odd"),
    ('', "Enter a number"),
    ({'a': 1}, "Enter a number"),
    ([2, 3, 5], "Enter a number"),
]


class TestEvenOdd(unittest.TestCase):
    def test_even_odd(self):
        for tpl in test_values:
            self.assertEqual(even_odd(tpl[0]), tpl[1], msg="Failed for {}".format(tpl[0]))
            self.assertTrue(isinstance(even_odd(tpl[0]), str))


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

একটি টেস্টকেস লিখতে হলে unittest.TestCase ক্লাসটির একটি সাবক্লাস তৈরি করতে হবে। এখানে সেটি, TestEvenOdd এর পরে প্রয়োজন অনুযায়ী টেস্ট ফাংশন লিখে আমারা আমাদের প্রোগ্রাম টেস্ট করতে পারব। assertEqual এবং assertTrue হচ্ছে unittest.TestCase ক্লাসের মেথড।

assertEqual(self, first, second, msg=None)

মেথডটি ফেইল করে যদি first এবং second অবজেক্ট unequal হয়।

assertTrue(self, expr, msg=None) মেথডটি চেক করে যে expr বা expression টি ঠিক কিনা।

ছোট প্রোগ্রামটির জন্য unit testing প্রোগ্রামটি বেশ বড় মনে হলেও একটি প্রোগ্রাম যখন আকারে বেশ বড় হয়ে যায় তখন unit testing বেশ কাজে দেয়। যেমন একটি ওয়েব এপ্লিকেশনে, আমরা টেস্ট করতে চাই একজন ইউজার লগইন করে তার প্রোফাইল আপডেট করতে পারে কিনা। ম্যানুয়ালি করতে হলে এর জন্য আমাদের html লিখে একটি লগইন ফরম তৈরি করতে হবে, আরও নানা কাজ করতে হবে। কিন্তু এই ছোট অংশটি টেস্ট করার জন্য আমাদের একটি টেস্টকেইস লিখলেই কাজ হয়ে যায়। এছাড়াও একবার টেস্টকেইস লিখলে আমরা তা বিভিন্ন সময় বুঝতে পারি যে প্রোগ্রামটিতে কি কি টেস্ট করা হয়েছে এবং এটি কি ধরনের টেস্ট পাস করেছে।

permanent link

answered 14 Jan '15, 14:10

__salman__'s gravatar image

__salman__ ♦♦
1.1k211

edited 14 Jan '15, 14:38

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×103
×1

question asked: 14 Jan '15, 11:36

question was seen: 2,156 times

last updated: 23 Oct '15, 13:59