পাইথনের unittest মডিউল ব্যবহার করে ফাংশন নির্দিষ্ট এক্সেপশন থ্রো করে কিনা তা টেস্ট করা যায়। assertRaises মেথড দুটিভাবে ব্যবহার করা যায় — কনটেক্সট ম্যানেজার হিসেবে বা কলেবল হিসেবে।
উদাহরণ: unittest ব্যবহার করে
import unittest
class MyTestCase(unittest.TestCase):
def test_cannot_add_int_and_str(self):
# কনটেক্সট ম্যানেজার হিসেবে (প্রস্তাবিত)
with self.assertRaises(TypeError):
1 + '1'
def test_cannot_add_int_and_str_v2(self):
# কলেবল হিসেবে
import operator
self.assertRaises(TypeError, operator.add, 1, '1')
if __name__ == '__main__':
unittest.main(exit=False)
আউটপুট
.. ---------------------------------------------------------------------- Ran 2 tests in 0.001s OK
ব্যাখ্যা
- Context Manager (
with): আরও পঠনযোগ্য, এক্সেপশন সঠিকভাবে ক্যাচ ও ক্লিন-আপ হয়। - Callable form:
assertRaises(ErrorType, callable, *args, **kwargs)— ফাংশন এবং এর আর্গামেন্ট পাস করুন। - দুই পদ্ধতিতেই টেস্ট পাস হয় যদি এক্সপেক্টেড এক্সেপশন থ্রো হয়।
pytest-এ (আধুনিক বিকল্প)
import pytest
def test_add_int_str():
with pytest.raises(TypeError):
1 + '1'
pytest আরও সিম্পল এবং পাওয়ারফুল টেস্টিং ফ্রেমওয়ার্ক।