Home Python C Language C ++ HTML 5 CSS Javascript Java Kotlin SQL DJango Bootstrap React.js R C# PHP ASP.Net Numpy Dart Pandas Digital Marketing

Introduction to Testing with unittest in Python


Testing is a crucial part of software development. Python provides a built-in module called unittest, which helps developers write and run test cases. The unittest module supports automated testing by defining tests in a class-based structure.

Getting Started with unittest

The unittest module is part of Python's standard library, so you don’t need to install any additional packages. To use it, you need to define a test class that inherits from unittest.TestCase.

Basic Structure of a Test Case

Here is an example of a simple test case:

    import unittest

    def add_numbers(a, b):
        return a + b

    class TestMathOperations(unittest.TestCase):
        def test_add_numbers(self):
            result = add_numbers(2, 3)
            self.assertEqual(result, 5)  # Check if the result is 5

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

Output:

    .
    ----------------------------------------------------------------------
    Ran 1 test in 0.001s

    OK
        

Writing Multiple Test Cases

You can write multiple test methods within the same test class:

    import unittest

    def subtract_numbers(a, b):
        return a - b

    class TestMathOperations(unittest.TestCase):
        def test_add_numbers(self):
            self.assertEqual(add_numbers(2, 3), 5)

        def test_subtract_numbers(self):
            self.assertEqual(subtract_numbers(5, 3), 2)

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

Common Assertions

The unittest module provides various assertion methods to validate test cases:

Example of Assertions

    import unittest

    class TestAssertions(unittest.TestCase):
        def test_assertions(self):
            self.assertEqual(10, 10)
            self.assertNotEqual(10, 5)
            self.assertTrue(5 > 3)
            self.assertFalse(3 > 5)
            self.assertIn(3, [1, 2, 3])
            self.assertNotIn(4, [1, 2, 3])

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

Testing for Exceptions

You can test if a specific exception is raised using assertRaises:

    import unittest

    def divide_numbers(a, b):
        if b == 0:
            raise ValueError("Division by zero is not allowed")
        return a / b

    class TestExceptions(unittest.TestCase):
        def test_divide_by_zero(self):
            with self.assertRaises(ValueError):
                divide_numbers(10, 0)

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

Setup and Teardown Methods

The setUp and tearDown methods are executed before and after each test method, respectively. They are useful for setting up test data or cleaning up after tests.

    import unittest

    class TestSetupTeardown(unittest.TestCase):
        def setUp(self):
            self.data = [1, 2, 3]
            print("Setup method executed")

        def tearDown(self):
            print("Teardown method executed")

        def test_length(self):
            self.assertEqual(len(self.data), 3)

        def test_contains(self):
            self.assertIn(2, self.data)

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

Output:

    Setup method executed
    .
    Teardown method executed
    Setup method executed
    .
    Teardown method executed

    ----------------------------------------------------------------------
    Ran 2 tests in 0.002s

    OK
        

Running Tests

To run tests, execute the Python file containing the test cases. The unittest module will automatically discover and run all test methods that begin with test.

Conclusion

The unittest module is a powerful and flexible tool for testing Python code. By using test cases, assertions, and setup/teardown methods, you can ensure the reliability and correctness of your code. Testing helps catch bugs early and improves the maintainability of your applications.



Advertisement





Q3 Schools : India


Online Complier

HTML 5

Python

java

C++

C

JavaScript

Website Development

HTML

CSS

JavaScript

Python

SQL

Campus Learning

C

C#

java