A pytest plugin to report test results to Tinybird. At the end of every run, this plugin posts results using the Tinybird Events API.
- Python >=3.8
- pytest 3.8 or newer (previous versions might be compatible)
- Tinybird account and a token with append permissions
pypi install package: https://pypi.org/project/pytest-tinybird/
You can install the plugin with the following bash command:
$ pip install pytest-tinybird
You just need your Tinybird account and a Token with append permissions
Set these env variables:
export TINYBIRD_URL=<https://api.tinybird.co|https://api.us-east.tinybird.co> # depends on your region
export TINYBIRD_DATASOURCE=<datasource_name> # will be created with first results posted
export TINYBIRD_TOKEN=<token_with_append_permissions>
Then run pytest with --report-to-tinybird
.
$ pytest tests --report-to-tinybird
CI execution info can also be set using some env variables. These are from GitLab:
CI_COMMIT_SHA
CI_COMMIT_BRANCH
CI_JOB_ID
CI_JOB_NAME
CI_JOB_URL
If you are not using GitLab, you will need to set them manually. For instance, for GitHub actions you can check our current GitHub actions workflow.
The pytest-tinybird
plugin creates and sends report
objects via the Events API with this structure:
{
'date': now,
'commit': self.commit,
'branch': self.branch,
'job_id': self.job_id,
'job_url': self.job_url,
'job_name': self.job_name,
'test_nodeid': test.nodeid,
'test_name': test.head_line,
'test_part': test.when,
'duration': test.duration,
'outcome': test.outcome
}
When a report
object is first sent to Tinybird, a Data Source with the following definition and schema is created:
TOKEN "pytest-executor-write" APPEND
SCHEMA >
`commit` String `json:$.commit`,
`branch` String `json:$.branch`,
`date` DateTime `json:$.date`,
`duration` Float32 `json:$.duration`,
`job_id` String `json:$.job_id`,
`job_name` String `json:$.job_name`,
`job_url` String `json:$.job_url`,
`outcome` LowCardinality(String) `json:$.outcome`,
`test_name` String `json:$.test_name`,
`test_nodeid` String `json:$.test_nodeid`,
`test_part` LowCardinality(String) `json:$.test_part`
ENGINE MergeTree
ENGINE_PARTITION_KEY toYYYYMM(date)
You can also see the Data Source schema with this data sample
from an API Endpoint created from the Data Source the pytest-tinybird
plugin populates.