Usage
Installation
You can install teststack using pip or pipx:
pip install teststack
pipx install teststack
Tips
Tips about using teststack.
All of this is extra, the basic command you should need is only teststack
run.
Getting the Environment Setup
There are a handful of commands that are just about creating and tearing down the containers in the environment.
The first step that happens usually is render. The jinja2 file for the
docker container needs to be rendered to a Dockerfile. This step may be skipped
if there is no template file but the Dockerfile already exists so a template is
not required. The render step also will not be run if the modified time of the
dockerfile is more recent than the template file. This allows the user to modify
the dockerfile without rerendering it everytime.
Renders are triggered for the build command based on what was stated in the previous paragraph. And builds are triggered whenever there is a new tag discovered based on the current git repository.
teststack render
teststack build
Once you have a container image build, we can start the containers for the
environment. Start will start all of the containers, with the option to not run
tests container, which is the one that was just build. If you specify to not
run the tests container, then the image will not be triggered to be built.
teststack start
teststack start -n
teststack stop
teststack restart
The last two commands are more about running tests in that tests container.
There is exec which puts you in the tests container, with all the
environment variables set so you can do whatever you want. Then there is run
which runs in order, the steps specified in the teststack.toml file.
teststack exec
teststack run
teststack run -s tests -- -k test_add_users tests/unit/test_users.py
Running Tests Outside of Containers
Once you have the environment setup and your testing containers started, you also have the option to run the tests directly from your device instead of in the tests container.
If you are using something like the Test Runner for vscode, you can generate a
.env file to hold environment variables in.
testsack env -n > .env
Or you could just source the output to run the tests against this environment from your cli shell.
source <(teststack env)
pytest -v tests/unit/test_users.py