Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
Commit 95ff81e1 authored by Dorian Turba's avatar Dorian Turba
Browse files

add meta template for python_install.yml

parent 0cf9a3e8
No related branches found
No related tags found
No related merge requests found
## Objective
Run [pytest](https://docs.pytest.org/en/latest/) on your Python code to ensure all unit tests pass.
Pytest is a popular framework for writing and executing tests in Python, and it supports test
automation, modular fixtures, parameterized testing, and many other features.
## How to use it
1. Configure the `pytest.ini` or `pyproject.toml` file in your repository's root directory with your
desired rules.
2. Include the pytest template in your CI/CD configuration (see quick use above).
3. If you need to customize the job, check
the [jobs customization](https://docs.r2devops.io/get-started/use-templates/#job-templates-customization).
## Variables
| Name | Description | Default |
|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------|
| `PYTHON_SETUP` | Bash commands to setup your python environment. Default rely on `pyproject.toml` to install project and test dependencies. | `"pip install .[TESTS]"` |
| `IMAGE_TAG` | The default tag for the docker image. See [Python Docker Official Image](https://hub.docker.com/_/python) for supported tags and respective Dockerfile links | `"latest"` |
## Global Configuration of pytest
To add configuration to `pytest` that is shared with any other usage of pytest (such as manual runs,
pre-commit, etc.), you can use the `pytest.ini` or `pyproject.toml` configuration files. Learn more
about [pytest configuration](https://docs.pytest.org/en/stable/customize.html) files.
## Multiple pytest Jobs in the same pipeline
You can run this pytest job multiple times in the same pipeline (e.g. to test multiple python version
or different namespaces) using extends GitLab keyword.
```yaml
stages:
- test
include:
- remote: 'https://api.r2devops.io/job/r/gitlab/dorianturba/r2devops_catalog/pytest@latest.yaml'
# Compatibility tests
pytest_3.10:
extends: pytest
variables:
IMAGE_TAG: "3.10"
```
https://docs.r2devops.io/get-started/use-templates/#multiple-usage-of-the-same-job-template-in-your-pipeline
## Add a <a href="https://docs.pytest.org/en/latest/"><img alt="Tested with pytest" src="https://img.shields.io/badge/Tested%20with-pytest-green"></a> Badge to your project README.md
To display the use of pytest in your project, you can add the following badge to your README.md:
```markdown
<a href="https://docs.pytest.org/en/latest/">
<img alt="Tested with pytest" src="https://img.shields.io/badge/Tested%20with-pytest-green">
</a>
```
Please note that the `src` URL in the pytest badge will need to be updated to reflect the actual
testing status of your project in your continuous integration pipeline.
python_install:
image: python:${IMAGE_TAG}
stage: ${ENV_SETUP}
variables:
PYTHON_SETUP: "pip install .[TESTS]"
IMAGE_TAG: "latest"
STAGE: "env_setup"
script:
- python --version # Debug
- python -m venv venv --upgrade-deps || python -m venv venv # upgrade-deps is not supported before 3.9
- source venv/bin/activate
- ${PYTHON_SETUP}
- pytest
only:
changes:
- ./**/*.py
- .gitlab-ci.yml
- pyproject.toml
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment