Skip to content

pythoninthegrass/pytest_demo

Repository files navigation

pytest_demo

Summary

This is a demo project to show how to use pytest with a flask project.

Table of Contents

Setup

Minimum requirements

Recommended requirements

Running tests

Start server

# standalone server
./app/server.py start

# taskfile
task serve -- start

Run test(s)

# all tests
pytest

# fuzzy search (can match multiple tests/files)
pytest -k app

# specific file
pytest tests/unit/test_app.py

# specific test
pytest tests/unit/test_app.py::test_index

Stop server

# standalone server
./app/server.py stop

# taskfile
task serve -- stop

Development

Makefile

# install all repo dependcies
make install

# install specific repo dependencies
make <xcode|asdf|brew|devbox|pre-commit|task>

Taskfile

λ task
task: [default] task --list
task: Available tasks for this project:
* default:                  Default task
* format:                   Run formatters
* install:                  Install project dependencies
* lint:                     Run linters
* pre-commit:               Run pre-commit hooks
* pyclean:                  Remove .pyc and __pycache__
* serve:                    Run the server
* test:                     Run tests
* docker:build:             Build the docker image                                                     (aliases: docker:build)
* docker:down:              Stop and remove containers, networks, and volumes with docker compose      (aliases: docker:down)
* docker:exec:              Shell into a running container                                             (aliases: docker:exec)
* docker:login:             Login to the container registry                                            (aliases: docker:login)
* docker:logs:              Follow the logs of a running container                                     (aliases: docker:logs)
* docker:net:               Create docker network                                                      (aliases: docker:net)
* docker:prune:             Prune docker                                                               (aliases: docker:prune)
* docker:push:              Push the docker image to the registry                                      (aliases: docker:push)
* docker:stop:              Stop the project with docker compose                                       (aliases: docker:stop)
* docker:up:                Start the project with docker compose                                      (aliases: docker:up)
* docker:vol:               Create docker volume                                                       (aliases: docker:vol)
* playwright:codegen:       Generate playwright code                                                   (aliases: pw:codegen)
* playwright:install:       Install playwright drivers                                                 (aliases: pw:install)
* poetry:add-pypi:          Add test-pypi repository                                                   (aliases: poetry:add-pypi)
* poetry:build:             Build the poetry bin                                                       (aliases: poetry:build)
* poetry:bump-semver:       Bump the project semantic version                                          (aliases: poetry:bump-semver)
* poetry:export-reqs:       Export requirements.txt                                                    (aliases: poetry:export-reqs)
* poetry:install:           Install project dependencies                                               (aliases: poetry:install)
* poetry:publish:           Publish the poetry bin                                                     (aliases: poetry:publish)
* poetry:update-deps:       Update dependencies                                                        (aliases: poetry:update-deps)                                           (aliases: poetry:update-deps)                                                    (aliases: poetry:update-deps)

TODO

Further Reading