Professional data-driven testing framework demonstrating advanced QA automation capabilities with multiple data sources (CSV, Excel, JSON).
- API: ReqRes.in (https://reqres.in/api)
- Type: REST API testing with data-driven approach
- Language: Python 3.12
- Framework: Pytest 7.4.3
- Data Handling: Pandas, openpyxl
- Reporting: pytest-html, Allure
- CI/CD: GitHub Actions
- Logging: colorlog
QA_DataDriven_Testing/
├── .github/workflows/ # CI/CD automation
├── config/ # Configuration management
├── data/ # Test data files
├── tests/ # Test suites
├── utils/ # Utilities
├── reports/ # Test reports
└── logs/ # Execution logs
- Data-driven testing with CSV, Excel, JSON
- Parameterized tests with pytest
- Professional logging system
- HTML and Allure reports
- Configuration management
- Parallel test execution
- CI/CD with GitHub Actions
- Total test cases: 28
- Data sources: 3 formats (CSV, Excel, JSON)
- Test categories: Positive, Negative, Edge cases, Security
- Execution time: ~6s (sequential, external API dependent)
- Python 3.12+
- pip
# Clone repository
git clone https://github.com/arturdmt-alt/QA_DataDriven_Testing.git
cd QA_DataDriven_Testing
# Create virtual environment
python -m venv venv
# Activate virtual environment
# Windows:
venv\Scripts\activate
# Mac/Linux:
source venv/bin/activate
# Install dependencies
pip install -r requirements.txtpython -m pytest -vpython -m pytest -v --html=reports/html/report.html --self-contained-htmlpython -m pytest -v -m positive
python -m pytest -v -m negative
python -m pytest -v -m data_drivenpython -m pytest -v -n autotest_id,username,password,expected_result,test_type
TC_001,eve.holt@reqres.in,cityslicka,success,positive
TC_002,invalid@test.com,wrongpass,error,negativetest_id: TC_026
email: eve.holt@reqres.in
password: pistol
expected_result: success
test_type: positive
{
"login_tests": [
{
"test_id": "TC_031",
"endpoint": "/login",
"method": "POST",
"payload": {"email": "eve.holt@reqres.in", "password": "cityslicka"},
"expected_status": 200
}
]
}Edit config/dev.yaml to customize:
- Base URL
- Timeouts
- Retry attempts
- Log levels
Some test cases fail due to the external API (ReqRes.in) returning 403 responses. This demonstrates how the framework detects changes in third-party systems.
Expected behavior:
- Framework executes tests correctly
- Data-driven approach works as designed
- Logging and reporting function properly
API limitations:
- Rate limiting on ReqRes.in
- Authentication requirements
- Service availability
This is a common scenario in real-world testing where external dependencies change their behavior.
- Data-driven testing methodology
- Test parameterization with pytest
- External data sources (CSV, Excel, JSON)
- Separation of test logic and test data
- Professional logging system
- Configuration management
- Exception handling and validation
- CI/CD integration
- Test markers and categorization
- Test data is externalized to CSV, Excel, and JSON to enable scalability and easier maintenance
- Assertions are tolerant to external API changes (e.g., 400-403 responses)
- Logging and configuration are centralized to support CI/CD pipelines
- Framework validates automation architecture rather than third-party API correctness
Architecture Philosophy: "This project focuses on demonstrating automation architecture and data-driven testing principles rather than validating a specific public API."
Generated in reports/html/report.html after test execution.
Execution logs stored in logs/ with timestamps.
GitHub Actions workflow automatically:
- Runs tests on push/pull request
- Generates test reports
- Archives artifacts
Note: CI pipelines validate framework stability rather than API correctness when using third-party systems.
Artur Dmytriyev - QA Automation Engineer

