Intro-To-PYTHON-For-Testers (8 Part Series)
1 [Part 2]Python Fundamentals: Syntax, Data Types, and Operators for QA
2 [Part 1]Setting Up Your Python Environment for Test Automation
… 4 more parts…
3 [Part 3]Control Flow and Decision Making in Python for QA Scripts
4 [Part 4]Data Structures in Python: Organizing Test Data Effectively
5 [Part 5]Functions and Modules: Writing Reusable and Modular Python QA Code
6 [Part 6]Error Handling and Exception Handling in Python for Robustness
7 [Part 7]File I/O and Data Persistence in Python for QA Automation
8 [Part 8]Introduction to Python for Selenium (Preparation for UI Automation)
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:
<span>try</span><span>:</span><span>result</span> <span>=</span> <span>10</span> <span>/</span> <span>0</span><span>except</span> <span>ZeroDivisionError</span><span>:</span><span>print</span><span>(</span><span>"</span><span>Can</span><span>'</span><span>t divide by zero!</span><span>"</span><span>)</span><span>try</span><span>:</span> <span>result</span> <span>=</span> <span>10</span> <span>/</span> <span>0</span> <span>except</span> <span>ZeroDivisionError</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>Can</span><span>'</span><span>t divide by zero!</span><span>"</span><span>)</span>try: result = 10 / 0 except ZeroDivisionError: print("Can't divide by zero!")
Enter fullscreen mode Exit fullscreen mode
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:
<span>try</span><span>:</span><span>with</span> <span>open</span><span>(</span><span>"</span><span>test_data.txt</span><span>"</span><span>)</span> <span>as</span> <span>file</span><span>:</span><span>content</span> <span>=</span> <span>file</span><span>.</span><span>read</span><span>()</span><span>except</span> <span>FileNotFoundError</span><span>:</span><span>print</span><span>(</span><span>"</span><span>Test data file is missing.</span><span>"</span><span>)</span><span>finally</span><span>:</span><span>print</span><span>(</span><span>"</span><span>Execution completed.</span><span>"</span><span>)</span><span>try</span><span>:</span> <span>with</span> <span>open</span><span>(</span><span>"</span><span>test_data.txt</span><span>"</span><span>)</span> <span>as</span> <span>file</span><span>:</span> <span>content</span> <span>=</span> <span>file</span><span>.</span><span>read</span><span>()</span> <span>except</span> <span>FileNotFoundError</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>Test data file is missing.</span><span>"</span><span>)</span> <span>finally</span><span>:</span> <span>print</span><span>(</span><span>"</span><span>Execution completed.</span><span>"</span><span>)</span>try: with open("test_data.txt") as file: content = file.read() except FileNotFoundError: print("Test data file is missing.") finally: print("Execution completed.")
Enter fullscreen mode Exit fullscreen mode
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:
<span>class</span> <span>TestFailure</span><span>(</span><span>Exception</span><span>):</span><span>pass</span><span>def</span> <span>validate</span><span>(</span><span>test_result</span><span>):</span><span>if</span> <span>test_result</span> <span>!=</span> <span>"</span><span>Passed</span><span>"</span><span>:</span><span>raise</span> <span>TestFailure</span><span>(</span><span>"</span><span>Test did not pass</span><span>"</span><span>)</span><span>validate</span><span>(</span><span>"</span><span>Failed</span><span>"</span><span>)</span><span>class</span> <span>TestFailure</span><span>(</span><span>Exception</span><span>):</span> <span>pass</span> <span>def</span> <span>validate</span><span>(</span><span>test_result</span><span>):</span> <span>if</span> <span>test_result</span> <span>!=</span> <span>"</span><span>Passed</span><span>"</span><span>:</span> <span>raise</span> <span>TestFailure</span><span>(</span><span>"</span><span>Test did not pass</span><span>"</span><span>)</span> <span>validate</span><span>(</span><span>"</span><span>Failed</span><span>"</span><span>)</span>class TestFailure(Exception): pass def validate(test_result): if test_result != "Passed": raise TestFailure("Test did not pass") validate("Failed")
Enter fullscreen mode Exit fullscreen mode
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
withpdb
.
Example:
<span>import</span> <span>logging</span><span>logging</span><span>.</span><span>basicConfig</span><span>(</span><span>level</span><span>=</span><span>logging</span><span>.</span><span>INFO</span><span>)</span><span>logging</span><span>.</span><span>info</span><span>(</span><span>"</span><span>Starting test suite...</span><span>"</span><span>)</span><span>import</span> <span>logging</span> <span>logging</span><span>.</span><span>basicConfig</span><span>(</span><span>level</span><span>=</span><span>logging</span><span>.</span><span>INFO</span><span>)</span> <span>logging</span><span>.</span><span>info</span><span>(</span><span>"</span><span>Starting test suite...</span><span>"</span><span>)</span>import logging logging.basicConfig(level=logging.INFO) logging.info("Starting test suite...")
Enter fullscreen mode Exit fullscreen mode
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
Intro-To-PYTHON-For-Testers (8 Part Series)
1 [Part 2]Python Fundamentals: Syntax, Data Types, and Operators for QA
2 [Part 1]Setting Up Your Python Environment for Test Automation
… 4 more parts…
3 [Part 3]Control Flow and Decision Making in Python for QA Scripts
4 [Part 4]Data Structures in Python: Organizing Test Data Effectively
5 [Part 5]Functions and Modules: Writing Reusable and Modular Python QA Code
6 [Part 6]Error Handling and Exception Handling in Python for Robustness
7 [Part 7]File I/O and Data Persistence in Python for QA Automation
8 [Part 8]Introduction to Python for Selenium (Preparation for UI Automation)
原文链接:[Part 6]Error Handling and Exception Handling in Python for Robustness
暂无评论内容