CoverageCollection
This jobs runs the specified unit tests with activated code coverage collection (incl. branch coverage).
It uses pytest, pytest-cov and coverage.py in a single job run, thus it uses one fixed Python version (usually latest). It generates HTML and Cobertura reports (XML), then it uploads the HTML report as an artifact and the jUnit test results (XML) to Codecov and Codacy.
Configuration options to pytest
and coverage.py
should be given via sections [tool.pytest.ini_options]
and
[tool.coverage.*]
in a pyproject.toml
file.
Behavior:
Checkout repository
Setup Python and install dependencies
Extract configuration from
pyproject.toml
or.coveragerc
.Run unit tests and collect code coverage
Convert coverage data to a Cobertura XML file
Convert coverage data to a HTML report
Upload HTML report as an artifact
Publish Cobertura file to CodeCov
Publish Cobertura file to Codacy
Preconditions:
A CodeCov account was created.
A Codacy account was created.
Requirements:
Setup a secret (e.g. codacy_token
) in GitHub to handover the Codacy project token to the job.
Dependencies:
Instantiation
Simple Example
jobs:
Coverage:
uses: pyTooling/Actions/.github/workflows/CoverageCollection.yml@r0
with:
artifact: Coverage
secrets:
codacy_token: ${{ secrets.CODACY_PROJECT_TOKEN }}
Complex Example
jobs:
Coverage:
uses: pyTooling/Actions/.github/workflows/CoverageCollection.yml@r0
needs:
- Params
with:
python_version: ${{ needs.Params.outputs.python_version }}
artifact: ${{ fromJson(needs.Params.outputs.artifact_names).codecoverage_html }}
secrets:
codacy_token: ${{ secrets.CODACY_PROJECT_TOKEN }}
Parameters
python_version
Parameter Name |
Required |
Type |
Default |
---|---|---|---|
python_version |
optional |
string |
3.11 |
Python version used for running unit tests.
requirements
Parameter Name |
Required |
Type |
Default |
---|---|---|---|
requirements |
optional |
string |
|
Python dependencies to be installed through pip.
tests_directory
Parameter Name |
Required |
Type |
Default |
---|---|---|---|
tests_directory |
optional |
string |
|
Path to the directory containing tests (test working directory).
unittest_directory
Parameter Name |
Required |
Type |
Default |
---|---|---|---|
unittest_directory |
optional |
string |
|
Path to the directory containing unit tests (relative to tests_directory).
coverage_config
Parameter Name |
Required |
Type |
Default |
---|---|---|---|
coverage_config |
optional |
string |
|
Path to the .coveragerc
file. Use pyproject.toml
by default.
artifact
Parameter Name |
Required |
Type |
Default |
---|---|---|---|
artifact |
yes |
string |
— — — — |
Name of the coverage artifact.
Secrets
codacy_token
Secret Name |
Required |
Type |
Default |
---|---|---|---|
codacy_token |
yes |
string |
— — — — |
Token to push result to codacy.
Results
This job template has no output parameters.