Introduction

Robust test automation scripts gracefully handle unexpected errors. This module shows how to handle exceptions, raise custom errors, and debug scripts effectively using Python.


Lesson 1: Understanding Errors and Exceptions

Concept:
Errors occur when something goes wrong in your script—either due to syntax, logic, or runtime issues.

Key Topics:

  • Syntax Errors vs Runtime Errors: Compile-time vs execution failures.
  • Common Exceptions: NameError, TypeError, ValueError, etc.
  • Why Exceptions Matter: Preventing crashes and improving clarity.

Example:

try:
    result = 10 / 0
except ZeroDivisionError:
    print("Can't divide by zero!")

Pro Tip: Always review tracebacks—they point directly to the issue.


Lesson 2: Implementing try-except Blocks

Concept:
Python’s try-except block allows you to catch and respond to errors without halting your test.

Key Topics:

  • try: Block of code to attempt.
  • except: Handle a specific exception.
  • finally: Code that runs regardless of outcome.
  • else: Run if no exception occurs.

Example:

try:
    with open("test_data.txt") as file:
        content = file.read()
except FileNotFoundError:
    print("Test data file is missing.")
finally:
    print("Execution completed.")

Pro Tip: Use finally to close resources or perform cleanup.


Lesson 3: Raising Custom Exceptions

Concept:
Define your own errors to signal specific conditions in your test scripts.

Key Topics:

  • Using raise Keyword: Triggering errors manually.
  • Creating Custom Exception Classes: Subclassing Exception.
  • Where to Use: Invalid inputs, failed validations, etc.

Example:

class TestFailure(Exception):
    pass

def validate(test_result):
    if test_result != "Passed":
        raise TestFailure("Test did not pass")

validate("Failed")

Pro Tip: Prefix custom exceptions with Test or QA for easy identification.


Lesson 4: Logging and Debugging Python Scripts

Concept:
Logging provides a record of execution flow, and debugging tools help locate and fix errors efficiently.

Key Topics:

  • Using logging Module: Write logs to console or file.
  • Logging Levels: DEBUG, INFO, WARNING, ERROR, CRITICAL
  • Using Python Debugger: Insert breakpoints with pdb.

Example:

import logging
logging.basicConfig(level=logging.INFO)
logging.info("Starting test suite...")

Pro Tip: Use logging.exception() inside except blocks to log stack traces.


Conclusion

Exception handling ensures test scripts don’t crash unexpectedly and provides better control over failures.

Key Takeaways:

  • Use try-except to gracefully manage errors.
  • Define custom exceptions for specific test conditions.
  • Log important actions and exceptions to simplify debugging.
  • Use debugging tools to pinpoint issues quickly.

What’s Next?
In the next module, you’ll learn about File I/O and Data Persistence in Python for QA Automation, including reading logs, writing reports, and managing test data.

Visit us at Testamplify | X | Instagram | LinkedIn

Image description