techmore.in

Python - Testing

What is Testing?

Testing in Python is the process of verifying that your code behaves as expected. It helps identify bugs, improve code quality, and ensure that updates don’t break existing features.

Why Testing is Important

  • Ensures code reliability and correctness
  • Facilitates maintenance and refactoring
  • Makes collaboration and team development easier
  • Automates the checking of edge cases

Types of Testing

  • Unit Testing: Tests individual functions or units
  • Integration Testing: Tests combined parts of an application
  • System Testing: Validates the complete application
  • Acceptance Testing: Confirms the software meets business requirements

Python Testing Frameworks

  • unittest – Built-in testing framework
  • pytest – Popular third-party testing tool with advanced features
  • doctest – Tests embedded in docstrings
  • nose2 – Successor to the now-deprecated nose

Using unittest

unittest is Python’s built-in unit testing framework.

python
import unittest

def add(x, y):
    return x + y

class TestMath(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(2, 3), 5)  # Passes if 2 + 3 == 5

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

Using pytest

pytest makes testing easier and more readable.

sh
pip install pytest
python
def multiply(a, b):
    return a * b

def test_multiply():
    assert multiply(3, 4) == 12

Run the test using:

sh
pytest test_file.py

Using doctest

Tests can be embedded in docstrings and executed as part of documentation.

python
def square(x):
    """
    Returns the square of a number.

    >>> square(3)
    9
    """
    return x * x

import doctest
doctest.testmod()

Mocking and Fixtures

  • Mocking helps simulate external dependencies
  • Fixtures provide reusable test data setup

Best Practices

  • Write small and independent tests
  • Use descriptive test names
  • Group tests logically (e.g., by module)
  • Automate tests in CI/CD pipelines

Conclusion

Python offers powerful tools to write, run, and manage tests easily. Whether using unittest, pytest, or doctest, testing your code ensures higher quality and fewer bugs in production.