Useful Links
Computer Science
Cybersecurity
Python Testing
1. Fundamentals of Software Testing
2. Python Testing Environment Setup
3. The unittest Framework
4. The pytest Framework
5. Test Design and Best Practices
6. Mocking, Patching, and Test Doubles
7. Advanced Testing Techniques
8. Testing Specific Application Types
9. Test Automation and Continuous Integration
10. Code Coverage
11. Security-Oriented Testing
12. Test Data Management
13. Debugging and Troubleshooting Tests
14. Performance and Optimization
The pytest Framework
Introduction to pytest
Overview and Philosophy
Advantages over unittest
Simpler Syntax
Rich Plugin Ecosystem
Powerful Fixtures
Better Error Reporting
Installation and Setup
Installing via pip
Verifying Installation
Configuration Files
Writing Basic Tests
Test Discovery Conventions
File and Function Naming
Directory Structure
Test Collection Rules
Simple assert Statements
Using Python's Built-in assert
Enhanced Failure Reporting
Assertion Introspection
Test Function Structure
Function-Based Tests
Test Documentation
pytest Fixtures
Purpose of Fixtures
Managing Test State
Sharing Setup Across Tests
Dependency Injection
Creating and Using Fixtures
The @pytest.fixture Decorator
Injecting Fixtures into Tests
Fixture Return Values
Fixture Scope
function Scope
class Scope
module Scope
session Scope
Scope Selection Guidelines
Fixture Dependencies
Fixture Composition
Nested Fixtures
Fixture Ordering
Built-in Fixtures
tmp_path
Temporary File and Directory Management
Path Object Usage
tmp_path_factory
Session-Scoped Temporary Paths
capsys
Capturing Standard Output and Error
Reading Captured Output
capfd
File Descriptor Capture
monkeypatch
Modifying Environment and Attributes
Patching Functions and Classes
request
Accessing Test Request Information
Fixture Introspection
Markers
Marking Tests
@pytest.mark.skip
@pytest.mark.skipif
@pytest.mark.xfail
Marker Arguments
Creating Custom Markers
Defining Custom Markers in pytest.ini
Applying Custom Markers
Marker Documentation
Selecting Tests with Markers
Running Subsets of Tests
Using the -m Option
Complex Marker Expressions
Parametrizing Tests
@pytest.mark.parametrize
Writing Parameterized Test Functions
Multiple Parameter Sets
Parameter IDs
Parametrizing Fixtures
Using params in Fixtures
Sharing Parameterized Fixtures
Indirect Parametrization
Dynamic Parametrization
pytest_generate_tests Hook
Runtime Parameter Generation
Testing for Expected Exceptions
pytest.raises
Using as a Context Manager
Asserting Exception Messages
Exception Type Validation
Exception Information Access
ExceptionInfo Objects
Exception Attributes
pytest Configuration
Configuration Files
pytest.ini
pyproject.toml
setup.cfg
Command Line Options
Common Options
Custom Options
Environment Variables
PYTEST Environment Variables
Custom Environment Configuration
pytest Plugins
Finding and Installing Plugins
Searching the Plugin Index
Installing via pip
Plugin Dependencies
Common Plugins
pytest-cov
Measuring Test Coverage
Coverage Configuration
pytest-mock
Simplifying Mocking with Fixtures
Mock Integration
pytest-xdist
Running Tests in Parallel
Distributed Testing
pytest-html
HTML Test Reports
Report Customization
Writing Custom Plugins
Plugin Structure
Hook Implementation
Plugin Distribution
Previous
3. The unittest Framework
Go to top
Next
5. Test Design and Best Practices