5.2 KiB
5.2 KiB
Test Suite Organization
This directory contains all automated tests organized by functionality following world-class best practices.
Directory Structure
tests/
├── conftest.py # Shared pytest fixtures and configuration
├── student_authentication/ # Authentication-related tests
│ ├── __init__.py
│ ├── test_login.py # Login functionality tests
│ ├── test_logout.py # Logout functionality tests
│ ├── test_password_reset.py # Password reset tests
│ └── test_complete_student_flow.py # Complete authentication flow
├── student_profile/ # Profile-related tests
│ ├── __init__.py
│ └── test_profile_filling.py # Profile completion tests
└── student_assessment/ # Assessment-related tests (Future)
└── __init__.py
Test Categories
1. Student Authentication (student_authentication/)
Tests for student authentication flows:
-
test_login.py: Login functionality- ✅ Successful login
- ✅ Login with invalid credentials
- ✅ Login with remember me
- ✅ Login form elements visibility
-
test_logout.py: Logout functionality- ✅ Logout from dashboard
- ✅ Logout after password reset
- ⚠️ Note: Logout functionality may need UI implementation
-
test_password_reset.py: Password reset functionality- ✅ Password reset for new student (first login)
- ✅ Password reset check for already reset student
- ✅ Password reset form validation
- ✅ Change password to standard (Admin@123)
-
test_complete_student_flow.py: Complete authentication flow- ✅ Login → Password Reset → Dashboard → Logout sequence
- ✅ Password reset sequence validation
2. Student Profile (student_profile/)
Tests for student profile management:
test_profile_filling.py: Profile completion- ✅ Profile incomplete modal appears
- ✅ Navigation to profile editor
- ✅ Profile editor page loads
- ✅ All profile tabs accessible
- ✅ Complete profile filling with data
3. Student Assessment (student_assessment/)
Tests for assessment flows (Future implementation):
- Assessment navigation
- Domain completion
- Question answering
- Feedback submission
Running Tests
Run all tests:
pytest tests/ -v
Run specific category:
# Authentication tests
pytest tests/student_authentication/ -v
# Profile tests
pytest tests/student_profile/ -v
# Assessment tests (when implemented)
pytest tests/student_assessment/ -v
Run specific test file:
pytest tests/student_authentication/test_login.py -v
pytest tests/student_profile/test_profile_filling.py -v
Run specific test:
pytest tests/student_authentication/test_login.py::TestLogin::test_login_success -v
Run with markers:
pytest -m authentication -v
pytest -m profile -v
pytest -m assessment -v
Test Execution Order
Tests are designed to be independent, but follow this logical sequence:
- Authentication (Login, Password Reset, Logout)
- Profile (Profile Completion)
- Assessment (Assessment Navigation, Completion)
Best Practices Followed
✅ Framework Structure
- Organized by functionality - Clear separation of concerns
- Proper package structure -
__init__.pyfiles for Python packages - Shared fixtures -
conftest.pyfor common setup/teardown - Test isolation - Each test is independent
✅ Naming Conventions
- Files:
test_*.py(pytest requirement) - Classes:
Test*(pytest requirement) - Methods:
test_*(pytest requirement) - Descriptive names: Clear indication of what is being tested
✅ Test Organization
- One test class per feature - Easy to locate and maintain
- Grouped by functionality - Related tests together
- Clear test structure - Setup → Action → Assertion
✅ Code Quality
- Page Object Model - All page interactions through page objects
- Explicit waits - No hard-coded sleeps
- Error handling - Proper exception handling
- Documentation - Docstrings for all test methods
Test Data
Tests use fixtures for test data:
new_student_credentials: New student (not yet reset password)existing_student_credentials: Existing student (already reset password)new_student_with_data: New student with complete profile data
TODO: Update fixtures to read from Excel file with actual student data.
Prerequisites
Before running tests:
- ✅ Login functionality must work
- ✅ Password reset functionality must work
- ✅ Profile editor must be accessible
- ✅ All
data-testidattributes must be present in UI
Next Steps
- ✅ Complete authentication tests
- ✅ Complete profile tests
- ⏳ Implement assessment tests
- ⏳ Add integration tests
- ⏳ Add performance tests
Notes
- All tests follow the Page Object Model pattern
- All tests use explicit waits (no
time.sleep()) - All tests use data-testid locators (best practice)
- Password tracking system prevents ambiguity after password reset
- Test sequence ensures password reset happens before other operations