This project describes full project of FastAPI with RestAPI, Tortoise ORM, Testing, Deployment and CI/CD.
- Python 3.12
- Fastapi
- Tortoise ORM
- Postgresql 16
- Pytest
- Docker
- Test coverage
- Create Virtual Environment.
python -m venv venv
- Install Dependencies
pip install -r requirements.txt
- Export environment variables
export ENVIRONMENT=prod export TESTING=1 export DATABASE_URL=postgres://postgres:postgres@web-db:5432/web_dev
- Run the project
uvicorn fast_app.main:app --reload
- Build docker compose
docker-compose up -d --build
- Create Database Migrations
docker-compose exec web aerich init -t fast_app.db.TORTOISE_ORM docker-compose exec web aerich init-db docker-compose exec web aerich upgrade # To update migrations files if there are any changes
- Test with pytest
# normal run docker-compose exec web python -m pytest # disable warnings docker-compose exec web python -m pytest -p no:warnings # run only the last failed tests docker-compose exec web python -m pytest --lf # run only the tests with names that match the string expression docker-compose exec web python -m pytest -k "summary and not test_read_summary" # stop the test session after the first failure docker-compose exec web python -m pytest -x # enter PDB after first failure then end the test session docker-compose exec web python -m pytest -x --pdb # stop the test run after two failures docker-compose exec web python -m pytest --maxfail=2 # show local variables in tracebacks docker-compose exec web python -m pytest -l # list the 2 slowest tests docker-compose exec web python -m pytest --durations=2
- Run coverage
docker-compose exec web python -m pytest --cov="."
- Run flake8
docker-compose exec web flake8 .
- Run Black
docker-compose exec web black . --check
- Run isort
docker-compose exec web isort .