
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Test Python Function for Exception Handling
We write a unittest that fails only if a function doesn't throw an expected exception.
We also test if a Python function throws an exception.
For example, see the sample code we paste into the Python shell to test Python's type-safety:
Example
import unittest class MyTestCase(unittest.TestCase): def test_1_cannot_add_int_and_str(self): with self.assertRaises(TypeError): 1 + '1' def test_2_cannot_add_int_and_str(self): import operator self.assertRaises(TypeError, operator.add, 1, '1') unittest.main(exit=False)
Running the tests
Output
And the terminal outputs the following −
.. ---------------------------------------------------------------------- Ran 2 tests in 0.001s OK
Test one uses assertRaises as a context manager, which ensures that the error is properly caught and cleaned up, while recorded.
We could also write it without the context manager, see test two. The first argument would be the error type you expect to raise, the second argument, the function you are testing, and the remaining args and keyword args will be passed to that function.
It's far more simple, and readable to just use the context manager.
We see that as we expect, attempting to add a 1 and a '1' result in a TypeError.